User defined routing

@tychoish and @nathanielksmith will probably want to read this change. More Docs updates pending when we're closer to 0.94 release.