New compiler structure

Not yet concurrent

- Removes duplicate files for same job
Add file watch feature to recompile changes when in server mode

Uses fsnotify for watching files which breaks with editors that use
atomic saves. (What happened to you TextMate? We used to be close)

Right now an initial compile step is required to load cache.
If this step fails because of an error the program will panic.
Without this panic only a partial cache will be merged to the output
file even if the compile error was fixed.