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.
This function local cache is needed to store the statementId and the query statement so that in the event of an error I can lookup the statementId to get the query that may need to be purged from the LRU cache. Without this I can't purge the statement from cache as the lru implementation doesn't allow you to iterate through all the entries to hunt down the element that matches that id. I can add comments for the explanation. See [Line 503](https://github.com/phillipCouto/gocql/blob/prepared_lru3/conn.go#L512)