Add default options to record and no_nils options

The no_nils option ignores nil fields on records when encoding.
Default options on records are given to `use` and gets passed to
`encode` and `decode`.
Subrecords are defined with the `subrecord/1` function.