Cached hash codes

Fixes #79
Default property values on immutable beans

Add ImmutableDefaults
Fixes #80
Handle extends generics with two or more params

Fixes #81
Property aliases

Add alias ability to PropertyDefinition
Fixes #82
Handle extends clause union types

No support for generic parameters on second and subsequent union types
Fixes #83
Provide utility to iterate over beans

Depth-first iteration handling collections
Fixes #84