Major cleanup + new map abstractions

– Made naming of structs more consistent
– Added an implementation of double-linked lists
– Added a cache abstraction to the maps package
– Added a LRU cache implementation to the maps package