General interface update and code cleanup.

Applying Astron's style guide to Bamboo.
Cleanup reinspired by python and others:
 - More explicit as possible
 - Simpler implementation as possible.
 - Less repetitive as possible (DRY).
 - Louder errors as possible.
 - More concise where possible.

Added a couple TODOs and FIXMEs to improve the error-verbosity and missing/broken implementations.