Use type information to deser Option

I don't really have much idea what I'm doing, so the structure of
this code is mostly cargo-culted from OptionSerializerModule. Even
so, I've eschewed the use of a var for complex initialization, but I
don't understand Jackson well enough to name the intermediates
properly. I've also used for instead of chains of maps, to simplify
the code.

The gist is that OptionDeserializer is now a StdDeserializer, and has
a type deserializer to deserialize its element. This is needed for
deserializing polymorphic types using type information.

I've also added two regression tests for deserializing an Option of
an abstract type, for the two cases of Some and None. Like the code
itself, the two regression tests are based on the corresponding tests
in OptionSerializerTest.

Fixes: #147