Add external indexes

This change include the following:
1. additional data parser for external data that parse hdfs records using Hive serdes.
2. allow users to create external data. this includes:
 a) changes in metadata external dataset details.
 b) addition of a new metadata index to store external file's statuses.
 c) the pipeline for building the B-Tree and R-Tree indexes.
 d) hyracks operators to fetch records with their RIDs using different formats.
 e) hyracks operators to lookup and parse external records.
 f) test cases for indexing and index access of different hdfs file formats.
 g) exposing the secondary indexes over external data to the compiler.

3. adding a new aql command to refresh external datasets. this includes
 a) global recovery on system startup.
 b) changes in the aql parser.
 c) construction of bulk modify pipelines and additional operators to perform local commit and abort operations (using 2PC protocol).

4. Added copyright header to all new files

5. Added additional test cases to test left outer join on external data

Change-Id: I1065a473299f6027eb073aeeba3a56d137f6f98e
Reviewed-on: http://fulliautomatix.ics.uci.edu:8443/70
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ian Maxon <imaxon@uci.edu>
151 files changed