rewrite

- traits can now require other traits
- traits can now receive options
- builder.prepare() can be used to queue functions which may query and modify trait configuration before final compilation
0.3.0