Derived Decodable can now handle Option<_> as optional input.

The motivation is to be able to decode json with optional fields, and
fill them in with None if missing. Impossible to do purely from
the implementation side as it does not know the type.

A generalization would be to specify default values for fields, this only defaults to `None` for `Option` types. This is not mandatory and is not done for rbml which keeps it's current behavior.

Closes #12794.
This is not going to work right if I have a type named `Option` that is not `std::option::Option`.

Similarly, it presumably will not work right if I rename `Option`, using either `use std::option::Option as Foo` or `type Foo = std::option::Option<int>`.