multi-engine support

- rename compilers to engines (and engine can compile and render, a compiler can only do the former)
- remove `.catch`es from test.coffee (let the error propagate when it hits `.done` for better stack traces)
- simplify compiler initialization a little by using a single constructor defined in the base Adapter
- add some more docs
- add support for [yade](https://github.com/slang800/yade)