New annotations for decorating teiid client classes

* Since annotation for detailing when code was introduced

* Updated annotation for detailing when code was modified and when was the
  old value
Implement prototype for new DataTypeManagerService

* Backwards compatible between 8.4 and 7.7 teiid data type managers

* Decorated with appropriate annotations for changes between versions
First experiments with javacc AST node generation

* Creates notional AST nodes from the 8.4 teiid parser using jjtree

* Automatic parser creation using ant and maven plumbing
Modify build framework

* Renames eclipse build launcher

* build.xml
 * Ensures a clean always takes place prior to a build

* pom.xml
 * Refactor the destination for the ast nodes and the parser.
 * Renames the parser to Teiid8Parser, explicity showing this to be
   different to the Teiid7Parser
 * Some options seem to be ignored by mvn jjtree-javacc so all options
   included here as well as they are fully observed

* Teiid8Parser.jjt
 * Ensures that all ast nodes are created via jjtree even if there are
   just simple newNode() methods. Means that the node classes are parser
   aware and the parser is aware of their constant ids
Modify, fix and commit the ast nodes

* AST nodes created based on version 8.4 teiid code. Still need to be
  sure they are backward compatible with version 7.7

* AggregateSymbol
* WindowFunction
 * Examples of AST nodes which have changed their class hierarchy. To
   workaround this, the javacc template utilises a factory for constructing
   the nodes. The factory can key on the parser version and return the
   correct implementation of aggregate symbol.
 * Thus, an AggregateSymbol interface is used throughout and two different
   implementations (v7 and v8) created.

* TeiidParser
 * Interface covering all version implementations of parsers
 * AST nodes reference this interface to make them compatible across parser
   versions

* PropertiesUtil
* StringUtil
 * Utility methods brought directly from teiid code
Utilities for dealing with Since and Removed annotations

* AnnotationUtils
 * Provides functions for handling fields/classes decorated with
   annotations

* Removed
 * Annotation for decorating fields/classes that has been removed, or no
   longer used, by latest versions of teiid

* [I]TeiidServerVersion
 * get[Min|Max]imumVersion methods that convert wildcarded versions into
   non-wildcarded ranges extremes.
 * Adds tests to spi unit test project
Creates error-free Teiid 7 Parser

* jjtree template included and modified from the original project to
  generate a working teiid 7 parser

* ast nodes modified and annotated to support both parsers
Reduce dependencies on teiid client libraries

* No need for any of these classes to import teiid classes
Rename CommonNodes to ASTNodes

* Generate the CommonNodes/ASTNodes interface in TeiidNodeFactory
  so that all ast nodes are represented. Makes a syntax factory easy to
  produce.
Avoid rebuilding the nodes

* With 2 parser templates attempting to create the AST nodes, the
  committed versions are being overwritten by jjtree. Stops the nodes
  being re-generated.
Implementation of the QueryService and QueryParser

* QueryParser unites the differing versions of the TeiidParser by
  constructing a TeiidParserInstance of which the implementations will be
  either version 7 or 8.
Generate the ASTNodes from the parser tree constants

* TeiidNodeFactory.main method used to generate the ASTNodes enum as well
  as the create methods.
Begin adding unit tests for query parser

* Adds equals and hashcode methods to ast nodes

* Adds test plugin for org.teiid.runtime.client.test
Drop the use of node scope methods

* Seem to not be required as provide more cruft in generated parsers
Fixes to parser AST nodes

* Fixes and changes required to get the teiid unit tests to run
  successfully.
Re-introduce teiid exception message formatting

* To try and ensure the same messages are generated in designer as the
  teiid server, formats and implements the same error messages as the
  teiid client code.

* Tries to use enums rather than string to facilitate better compilation
  error spotting.
Remove dependence on any teiid library

* Forks the types and transforms for the data manager service to remove all
  dependence on teiid libraries

* More code is added to the plugin but means those forked classes are more
  explicit when moving between versions. Also the types and transforms
  use DataTypeManager internally leading to two managers being active at
  runtime. This is not good.
Includes unit tests for the query parser

* Unit tests taken from teiid and added in to test both version 7 and
  version 8 parsing. Tests that are universal are added to the abstract
  parent test class whilst tests only applicable to each version are added
  to the respective version test classes.
Creates SQLStringVisitor with unit tests

* Turns off visitor creation in the generators since the visitors are only
  geared towards one implementation of the parser

* Single abstract visitor class for visiting complete with annotations
  and check method for ensuring version compatibility with respective AST
  nodes

* Accompanying tests for both version 7 and 8 SQL String Visitors
Further abstract the parser and visitor unit tests

* Given that the tests will be used for further visitor and parser related
  testing, abstract the tests to a general superclass, implementing the
  helpTest methods as per the requirements of the individual category of
  tests