Moved much of the router functionality into function-scoped classes.  This is designed to take advantage of the final keyword and link-time optimizations to remove the need for a vtable lookup on virtual functions.