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.
OK, I guess you need to correlate the statement id from the error message back to the cache, so I'm fine with this. On face value it looked like you were doing some kind of double caching, but digging deeper, I can see the problem you are trying to solve.