Annotation processing and tests

This provides annotation provessing, and changes Converter from
an interface to an abstract base class.

This will all allow for a user to annotate POJO and store it, without
needing to provide any additional information.

resolves #355