Add a couple helper classes, primarily for helping with PreparedStatements in the next commit
Update PreparedStatement usages to reuse the instance once prepared and to do the preparing once, lazily (using AsyncLazy<T>)

- The CQL statements here didn't change at all
- Added ConfigureAwait(false) to all our ExecuteAsync usages since we're library code and we don't need to capture any context