Annotation based Serializer and Deserializer

This PR adds support for annotation based serializer encryption and deserializer encryption.  To use this feature, you need to create a CryptoModule and add it to the ObjectMapper.

Registration of the module looks like:

```
EncryptionService service = ...;
ObjectMapper mapper = ...;
mapper.registerModule(new CryptoModule(service));
```

And the annotated properties look like:

```
  @Encrypted
  public String property;
```

This PR is a work in progress.
Improve naming:
- `annotation` for annotation variable.
- `baseSer` for the base serializer.
- `writers` for the collection coming in.
- `updatedWriters` for the collection going out.