Type safety of AttributeRenderer and ModelAdaptor

Improved the type safety of AttributeRenderer and ModelAdaptor by converting them to generic interfaces.

Another goal behind this is to help dependency injection for `AttributeRenderer`s and `ModelAdaptor`s. If using a framework such as Guice, you can bind each `AttributeRenderer<SomeType>` to an implementation. If the interface is not generic you have to create a separate [binding annotation](https://code.google.com/p/google-guice/wiki/BindingAnnotations) for each `AttributeRenderer`, which creates a lot of boilerplate.