Refactor the transit rolling cache.

Introduce a record type for the cache. Make it opaque to the rest of the world.

Then refactor the internals of the caching logic. In Erlang we can move a lot of decisions into pattern matches which simplifies the code flow quite a bit. Once this is done, we can excise some common functionality into helper functions.

Finally, introduce a `empty/0` call to create a new empty cache. This makes the module truly encapsulated. The notion of what a cache was was bleeding out of the module.
Supply a makefile for easy building inside the source directory.
Use `exit/1` rather than `erlang:throw/1`.

The basic rule is that throws are expected to be caught by the surrounding code and it is never allowed to escape out of a subsystem/application. By changing throws into exits, we abort the process on failure, but we also obtain proper stack traces in the common test suites.
Simplify the compare function in the exemplar_SUITE.

Exploit pattern matching to obtain a simpler function. Use `ct:fail/1` for error reporting.
Merge pull request #3 from jlouis/refactor-cache

Refactor to idiomatic Erlang