Added LRU Cache for Prepared statements to prevent memory leaks

This is the third attempt at issue #184. This merge request uses the groupcache/lru package as an external dependency since the implementation in the package is simple and generic enough to use out of the box inside gocql.

I have written a few integration tests. Please let me know if these tests are insufficient and I can try and expand on them some more.
I wondering what purpose this function-local cache instance serves. It looks like you're squirrelling away the mapping from a statement id to a statement, the latter of which you are using to preen the global LRU cache. It looks like it could make sense, but it is not immediately obvious, so it would be good from a reviewing perspective if you could explain a bit why you chose this particular approach.