Issue #27 Lifecycle stuff, ready for final review pass

Before I start implementing this all over the place!
Hmm, still not sure - the thread accessing the alias can be blocked based on null-ness of this.cache, making the flag redundant... which is what I was saying. Unless of course it's a valid workflow to pass a non-null value into the constructor, then change it with `setCache` later, though that would seem strange.