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.
Why do we need this constructor function - previously we've created cache instances in the `Connect()` function - is the flow of the library usage such that the LRU cache cannot get initialized in the same way as everything else?