Add functional cache code and readme
Add test dependencies (tests to follow!)