Add caching layer for skins

```
Looking at response times, running Siege on a Macbook Air.

============================================================
Response time before caching was added:

For all requests: 0.08 secs

============================================================
Response time after caching was added:

Getting the same avatar 100 times: 0.02 secs # best case, 4x increase in speed!
Getting a unique avatar 100 times: 0.08 secs # worse cas -, no different from before caching
Getting the same set of 10 avatars 1000 times: 0.02 secs

============================================================
Letting it run and taking a nap, peak memory usage in caching. Expected
it to peak around 64 MB. Actual: 

============================================================
Am now banned from Mojang API: definitely.
```