Reworked the concurrency guarantees of Client#start!

Before there was the possibility that you called #start! in one thread and then immediately #use or #execute in another, which should have raised a NotConnectedError, but would instead have raised an IoError from the IO reactor unless it had started (which it wasn't guaranteed to have, which is the point of #start! and #connected?)
Implemented consistency level setting for prepared statements