libbinder: Return UNEXPECTED_NULL when appropriate
Return a meaningful and consistent error code when libbinder encounters
a null reference that it didn't expect. This allows us to detect these
situations and cause a corresponding NullPointerException to be thrown
on the remote callsite.
While here, consolidate places we read vector<T> from a parcel into a
single templated version. This dramatically reduces code duplication.
Bug:
25617251
Test: Integration tests asserting that vectors serialize correctly
passes. Integration test asserting that we throw
NullPointerException on seeing a null reference also passes.
Change-Id: Ia59c264884ec89539c1b99cd7bd28ac201b5b7ac