Add additional field checks for deserialization.

Check that a field is not static when deserializing.

Contains some additional tests to confirm and document behavior
and prevent regressions for field deserialization.

(cherry picked from commit f4d72bcf5a9caa1d6cac74a018ab68dd87ec6d83)
Bug: 17202597

Change-Id: I72456a8b45ca0de1d3dd2b0f9515548b02e0a7be
Add additional checks in ObjectInputStream

Thanks to Jann Horn for reporting a bug in ObjectInputStream
and sending the initial patch.

Add some checks that the class of an object
being deserialized still conforms to the requirements
for serialization.

Add some checks that the class being deserialized matches
the type information (enum, serializable, externalizable)
held in the stream.

Delayed static initialization of classes until the
type of the class has been validated against the stream
content in some cases.

Added more tests.

Bug: 15874291
(cherry picked from commit 738c833d38d41f8f76eb7e77ab39add82b1ae1e2)

Change-Id: I9f5437ed60936882de56589537176466624e631d