Further cleaning up code for PT

Ok, this is a big one.

 * gdb now exports `RUST_BACKTRACE` to env to simplify debugging
 * added [hamcrest-rust](https://github.com/carllerche/hamcrest-rust) crate to make tests clearer
 * another major refactoring on PT, API is getting stabilised!
   * new attachers, that attach mutating and materialising code to Nodes
   * `#[zinc_task]` macro, that allows tasks to accept args with type parameters and trait bounds (i.e. static dispatch down to the end!)
   * `drivers` root node in PT
   * a bit better tests (they still need lots of love)
   * new os.simple_task.args materialiser with support for zinc_task
   * new integration test for lpc17xx that verifies a full lpc17xx PT tree with reasonable defaults