Reimplemented LRUCache for improved performance.

We now use a concurrent_unordered_map internally to avoid using a global lock for map accesses, and represent the linked list with fields within the map entries themselves, avoiding expensive allocations just to move an item to the end of the list.

This yields substantial speedups (reduction to 2-3% of original runtime) for the synthetic benchmark in testLRUCacheThreading, and a 40% reduction in runtime for a GafferScene::Instancer benchmark.

Also made the following changes :

- Removed unused includes
- Removed unused typedefs
- Reordered public methods for clarity - listing them in the order they're likely to be used aids understanding.
- Renamed Ptr template argument to Value. It's not compulsory to use a pointer type, and moreover we have tests where we don't.
Added LRUCache todo.

It may be that the speedups we've implemented already are sufficient in the real world, but it's worth noting that there is an alternative.