Start of services caching code

--HG--
extra : source : 1a69daf0703d54af216a3c8fab4e7768e302516b
Correct a few typos
Moving cache to its own class
Moving and adding to the cache tests

--HG--
extra : histedit_source : bb237c85fb80e80325b1599e71cf8ff00bc92da8%2C9dd5d4fdcc21e737aac1bc3ef86bbc1d96a6f02b
Py3 fix
Changing cache semantics, more docs
Fix typo in cache tests
merging with master
Merge pull request #131 from lawrenceakka/cache

Cache