Support nullable types, including primitives, enums and structs.

Tests included. Solves the nullable type support request in #3

Based on [work](https://github.com/chipdude/litjson/commit/eaa84eed6e0d876b962c5b33b4fc4a01b4fdbd3b) by @chipdude