[WIP] Query constructor API changes

Also, what happens if I pass in array("projection" => array(1,2,3,4), "PROJECTION" => array(5,6,7,8)) ?