Change tsc compilation commands to create compiled files under `build/ts`

Also, generate .js.map files for nicer debugging.
Change all static `createFrom*` function names to `From*`

The pattern is that static functions with an uppercase first letter are alternative constructors and always return new instances of the class they are on.
Merge pull request #1314 from tschneidereit/nat

Cleanup and build system improvements