Require an inputType to be specified when creating a JsonCodec

Previously, a JsonCodec could be created without an input type
being specified. This caused the input type to default to JsonNode.
However, this could clash with the declaration of the JsonCodec
instance. For example, the JsonCodec may have been declared as
JsonCodec<Alpha, Bravo>, i.e. it expects received JSON to be turned
into Alpha instances, not JsonNode instances. This led to an increased
likelihood of ClassCastExceptions.

To reduce the chances of this problem occurring, the constructors have
been modified to always require an inputType to be specified. The use
of generics helps to enforce that this type matches the declaration.
Some basic unit tests have been added to test decoding of JSON both
into a standard Java type, and into Jackson's JsonNode type.

Three other unused fields and some corresponding constructor arguments
have been removed as well.

Fixes #133