Improved filter criteria & code tidy

Now supports start and stop times, inclusive and exclusive lists for the
hosts and app names. Start and stop times are inclusive and you can only
provide either an inclusive or exclusive list for each of the host and
application filters.

*Note:* Need to change the time component of the key to a timeuuid. I was
lazy in using a microsecond timestamp.

Still does not do smart things with token ranges, i.e.
the search is over the entire data set. We know the first and last *key*
(not token) for each SSTable so if we know the time range we can limit the
number of sstables we read from.

Code tidy to pass the arguments into the SSTableFilteredScanner and a
memtable iterator that also does the filtering.

Next step is to add unit tests.

Current example query:

    curl -vX POST http://localhost:8080/intravert/intrareq-json -d "{\"e\":[ {\"type\":\"SETKEYSPACE\",\"op\":{\"keyspace\":\"splunk\"}}, {\"type\":\"CONSISTENCY\",\"op\":{\"level\":\"QUORUM\"}}, {\"type\":\"FILTEREDRANGESCAN\",\"op\":{\"columnFamily\" : \"splunk\", \"startTime\" : \"1368147160974\", \"endTime\" : \"1368147160995\", \"includeHosts\" : [], \"excludeHosts\" : [], \"includeApplications\" : [], \"excludeApplications\" : [] }}]}"

Returns 4 from a possible 78 rows:

    aarons-MBP-2011:examples aaron$ json/filtered_range_scan.sh
    Querying 'myks' and column family 'mycf'
    * About to connect() to localhost port 8080 (#0)
    *   Trying ::1...
    * connected
    * Connected to localhost (::1) port 8080 (#0)
    > POST /intravert/intrareq-json HTTP/1.1
    > User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
    > Host: localhost:8080
    > Accept: */*
    > Content-Length: 328
    > Content-Type: application/x-www-form-urlencoded
    >
    * upload completely sent off: 328 out of 328 bytes
    < HTTP/1.1 200 OK
    < content-length: 2026
    <
    * Connection #0 to host localhost left intact
    {"opsRes":{"0":"OK","1":"OK","2":[{"key":"1368147160975:aarons-MBP-2011.local:cassandra","cols":[{"name":"raw","value":" INFO [main] 2013-05-10 12:52:40,975 CassandraDaemon.java (line 166) Classpath: bin/../conf:bin/../build/classes/main:bin/../build/classes/thrift:bin/../lib/antlr-3.2.jar:bin/../lib/apache-cassandra-1.2.4.jar:bin/../lib/apache-cassandra-clientutil-1.2.4.jar:bin/../lib/apache-cassandra-thrift-1.2.4.jar:bin/../lib/avro-1.4.0-fixes.jar:bin/../lib/avro-1.4.0-sources-fixes.jar:bin/../lib/commons-cli-1.1.jar:bin/../lib/commons-codec-1.2.jar:bin/../lib/commons-lang-2.6.jar:bin/../lib/compress-lzf-0.8.4.jar:bin/../lib/concurrentlinkedhashmap-lru-1.3.jar:bin/../lib/guava-13.0.1.jar:bin/../lib/high-scale-lib-1.1.2.jar:bin/../lib/jackson-core-asl-1.9.2.jar:bin/../lib/jackson-mapper-asl-1.9.2.jar:bin/../lib/jamm-0.2.5.jar:bin/../lib/jbcrypt-0.3m.jar:bin/../lib/jline-1.0.jar:bin/../lib/json-simple-1.1.jar:bin/../lib/libthrift-0.7.0.jar:bin/../lib/log4j-1.2.16.jar:bin/../lib/lz4-1.1.0.jar:bin/../lib/metrics-core-2.0.3.jar:bin/../lib/netty-3.5.9.Final.jar:bin/../lib/servlet-api-2.5-20081211.jar:bin/../lib/slf4j-api-1.7.2.jar:bin/../lib/slf4j-log4j12-1.7.2.jar:bin/../lib/snakeyaml-1.6.jar:bin/../lib/snappy-java-1.0.5-M4.jar:bin/../lib/snaptree-0.1.jar:bin/../lib/jamm-0.2.5.jar"}]},{"key":"1368147160978:aarons-MBP-2011.local:cassandra","cols":[{"name":"raw","value":" INFO [main] 2013-05-10 12:52:40,978 CLibrary.java (line 61) JNA not found. Native methods will be disabled."}]},{"key":"1368147160974:aarons-MBP-2011.local:cassandra","cols":[{"name":"raw","value":" INFO [main] 2013-05-10 12:52:40,974 CassandraDaemon.java (line 127) JVM vendor/version: Java HotSpot(TM) 64-Bit Server VM/1.7.0_21"}]},{"key":"1368147160995:aarons-MBP-2011.local:cassandra","cols":[{"name":"raw","value":" INFO [main] 2013-05-10 12:52:40,995 DatabaseDescriptor.java (line 132) Loading settings from file:/Users/aaron/servers/cassandra/apache-cassandra-1.2.4/conf/cassandra.yaml"}]}]},"exception":null,"exceptionId":null}* Closing connection #0