generate the initial value from the type.

this also means that types support defaults now.
fall back to default if no keyword is parsed.
support simple union types.

e.g. unions where the possibilities are all of type `Value`.
fix syntax of datomic attribute type.
support Value types outside of unions.
support changing unions.

is it safe to use the reader? can it execute code?
support boolean fields.

note that the values are wrapped in `js/Boolean` objects as apparently
`(satisfies? ICloneable false)` is false.
grey out readonly fields.