Escape JavaScript strings as late as possible

By doing all our escaping in one place at the last possible opportunity,
all the values are properly esacped in `buffer` and we never have to do
the bizzare un-escaping or double-escaping.  This should prove itself to
be vastly more robust.
Add test case for #830 #847
Fix expression buffering bug
improve the hygiene of compiled functions

the variables I have namespaced are:
+ __indent -> jade.indent
+ [escape, merge, attrs, rethrow] -> straight namespace
+ interp -> jade.interp
+ __val__ -> jade.interp
+ __jade -> jade.debug

as far as I am aware the only reserved words left now are "jade" and "buf"
Merge pull request #1 from jkroso/fix/hygiene

improve the hygiene of compiled functions
if watching and compile failed don't bomb the watch
Merge pull request #908 from samccone/sjs/dont-bomb-on-watch-fail

if watching and compile failed don't bomb the watch
Merge pull request #963 from ForbesLindesay/fix/js-escaping

Fix js escaping
swap watchFile for a more cross platform solution