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
WIP