Update .ts file headers, tsd config, and type definitions subdirectory for new version of tsd
- Replaces old tsd config with new tsd.json
- Creates all.d.ts to reference all type definitions from tsd and elsewhere
- Creates subdirectory for type definitions that don't come from tsd
- adds "use strict" to all .ts files
- adds reference to all.d.ts to all .ts files
- cleanup .gitignore rules to match new directory structure; allows committing typings to git
- move .gitattributes file to root
Fixes the build

- build script finds all .ts files in lib directory, no longer needs an explicit list
- fixes the way angl's parser is loaded into compiler with a proper TypeScript interface
- Now using type definition for lodash
- update some dependency versions in package.json
- build script invokes tsc with "--module commonjs"
- adds new interfaces for more AstNode types
- adds lots of static typing, removed lots of ":any" messiness
- Updates required by new version of Typescript language
  - replace all "import ... module()" with "import ... require()"
  - replace all uses of "bool" type with "boolean"
  - remove ? from function arguments with default values (not allowed in newer TS)
  - switched some "private" members to "public /*protected*/" because they are accessed by subclasses
Change build so that compiled Typescript files and sourcemaps are placed in different directory than source code.
Add "use strict"; to .js files
Adds more missing Typescript interfaces for ast types
Change code emitter to only output parentheses when necessary (also ported main.js to main.ts)
Switches a few comments to JSDoc style
Code cleanup
Changes to prevent outputting unneeded parentheses in a few more situations
Update sample angl source code to conform to the current angl language spec (namely, all executable logic must be contained within a script)
Adds parser support for "and", "or", and "not" GML keywords.  (equivalent to logical operators &&, ||, and !, respectively)
Adds parser support for numbers that start with the decimal point (for example, .9 instead of 0.9)
Adds support for using "object" and "parent" as identifiers (variable names, property names, etc)
- the keywords object and parent are only used in places where it's impossible to use an identifier, so this change does not introduce any ambiguity
- "object" is used as a variable all over the GG2 codebase
Adds parser and compiler support for "globalvar" declarations.

- in GML, these declare a global variable.  It can be used anywhere in the code without a "global." prefix
Makes objects register their names into the global scope
Adds ability for AST walker to replace a single Statement node with a Statements (plural) node
- useful when you want to replace a single statement with multiple statements, or when you want to remove a single statement and leave an empty placeholder behind
- used to process, for example, "if(a) with(b) {}"
Changes code generator to output less unnecessary parentheses
Adds type information to a few variables
Changed code generator to omit parentheses in more situations where they are not necessary
Changes property name used by data structures to attach unique IDs to objects.  However, there is no functional difference.