Set up caching of various properties in nopwd and added appropriate specs.

Now userId, cToken and lToken are cached in the nopwd namespace by the Cache class.

New generic __setCachedProperty and __getCachedProperty were created to handle the getter/setter logic, including lazy loading on the getter. This is then called by the various specific getters and setters.

Signed-off-by: Gideon Farrell <me@gideonfarrell.co.uk>