Adds @JsonConstructor annotation for deserialization

This branch adds support for a `@JsonConstructor` annotation. A single
constructor, which must accept as the first argument a `JsonReader` or a type
that Gson can deserialize, may be annotated with `@JsonConstructor`. During
deserialization of a class having a constructor annotated in that way, the
constructor will be called in order to perform the deserialization.

The constructor may also have an optional second Gson argument.

This change takes effect only when the Gson instance has been built with a
GsonBuilder on which the `enableConstructorScanning` method has been called.

There are two main benefits to this approach:

* A user class can now deserialize (construct) itself without the need for a
  second auxiliary class (i.e., a TypeAdapter or a JsonDeserializer).
* Because the annotation is applied to a constructor, it is quite easy for
  classes deserialized in this way to have final fields.
Documentation and exception changes

* Removed Override from interface implementation to target 1.5
* Improved commenting
* Fixed error message typo
* Changed `read` to throw IOException on InvocationTargetException