[ASTERIXDB-3141][ASTERIXDB-3134] Allow querying columnar datasets

- user model changes: yes
- storage format changes: no
- interface changes: yes

Details:
This patch adds the ability to query columnar datasets.
Also, it teaches the compiler to read only the requested
columns. This patch also includes the ability to filter
mega-leaf nodes given a query predicate.

Interface changes:
- IMetadataProvider#getScannerRuntime()
  * To allow projections for both data records and meta records
- IProjectionInfo
  * Renamed to IProjectionFiltrationInfo
  * Added getFilterExpression() for columnar filters

User model changes:
- After this change you can create columnar datasets
Example:
  CREATE DATASET ExperDataset(ExperType)
  PRIMARY KEY uid AUTOGENERATED
  WITH {
    "dataset-format":{"format":"column"}
  };

- Added compiler property:
  * compiler.column.filter
  to enable/disable the usage of columnar filter

- Added storage properties:
  * storage.column.max.tuple.count
  An integer to tell the maximum number of
  tuples to store per mega leaf node
  * storage.column.free.space.tolerance
  the percentage of tolerable empty space to
  minimize column splitting

Change-Id: Ie9188bbd8463db22bf10c6871046c680528d5640
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17430
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Wail Alkowaileet <wael.y.k@gmail.com>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/pom.xml b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/pom.xml
index cadc714..8e0bc0c 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/pom.xml
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/pom.xml
@@ -91,5 +91,9 @@
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
     </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
   </dependencies>
 </project>