Configurable route segment constraints

This PR consists of the following

 - [x] Added a new interface `IRouteSegmentConstraint`
 - [x] Added convenience classes `RouteSegmentConstraintBase<T>` and `ParameterizedRouteSegmentConstraint<T>`
 - [x] Ported all `CaptureNodeWithConstraint` methods to implementations of `IRouteSegmentConstraint`
 - [x] Replaced methods with strategy pattern (using `IRouteSegmentConstraint`)
 - [x] Added `CustomDateTimeRouteSegmentConstraint` which allow you to specify the `DateTime` format.
 - [x] Fixed demo project to actually run
 - [x] Added custom `EmailRouteSegmentConstraint` to demo project

I'll document the public members and add a section to the wiki after you've provided some feedback and decide if this is something you want :smile: