3.0 Add Query::bufferResults()

Following the discussion on fce427a6f13b5a7a56ce482127fd754be37145a5 I've split out the buffering in ResultSets. It is now an optional feature that is enabled per query. I've still left the serialization and JSON serialization features on the base class as I think you shouldn't need a buffered result set before you can cache or convert to JSON.