Starting on router

A lot of the code right now is similar to epiphany's router.  I'm not sure that we need both "api" and "router" like epiphany has.  We should consider the things we expect the router to do when run:

1. echo text/html
2. echo json
3. return data (maybe an invoke() method could output buffer echos from run() and return the data)

Also to consider, if we want to provide easy access to modifying headers, this needs to be done before a router run().  This might need to be a part of the router.