Configurable route constraints

This PR consists of the following

 - [x] Added a new interface `IRouteConstraint`
 - [x] Added convenience classes `RouteConstraintBase<T>` and `ParameterizedRouteConstraint<T>`
 - [x] Ported all `CaptureNodeWithConstraint` methods to implementations of `IRouteConstraint`
 - [x] Replaced methods with strategy pattern (using `IRouteConstraint`)
 - [x] Fixed demo project to actually run
 - [x] Added custom route constraint to demo project

I'll add a section to the wiki if you decide to merge this :smile: