Issue #27 Lifecycle stuff, ready for final review pass

Before I start implementing this all over the place!
maybe not related to this change (and not sure if mentioned in the javadoc), but if addCache() throws an exception (like if a cache already exists for the alias for example), does anything need to be done to the Cache instance?