Finished bootstrapping browser modules

After a bit of reorganizing, things are now "bootstrapped" properly
for browser support.
Added string helpers

Added a fast starsWith(string, search) and an indent(string, margin=' ')
functions to lib/string.js.
Added JsHtml compiler

Added a simple "JsHtml" template compiler that outputs a javascript
body ready to be wrapped with Require.wrapModule. The compiled functions
take an input state and output an HTML string.

There are 2 types of non-html blocks:
<%
  // this javascript will be executed, but not appended to the output
  // there is one global "state" variable available, but you can also
  // set or require variables here that can be used in later blocks
%>
{{ /* this javascript that evaluates to a string will be appened to the
output */ }}

For example, given this JsHtml:
<%
  var foo = 'bar';
  var func = function(one) { return one + ' two' };
%>
<div>
  <h1>{{ foo }}</h1>
  <h2>{{ state.foo }}</h2>
  <h2>{{ func(state.one) }}</h2>
</div>

And this state:
{ one: 'one', foo: 'baz' }

The compiled function will output:
<div>
  <h1>bar</h1>
  <h2>baz</h2>
  <h2>one two</h2>
</div>