Allow abstract value types to be constructed from json using static factory methods.

This will permit the following to work:

```java
abstract class Resource {
  abstract String id();
  abstract String type();

  @Inject static Resource create(@Named("id") String id, @Named("type") type) {
     return new AutoValue_Resource(id, type);
  }
}
```
Note that if we like, we could make a shorthand for naming parameters similar to ConstructorProperties

ex. `@SerializedNames({"id", "type"})`

https://issues.apache.org/jira/browse/JCLOUDS-750