Refactored binding classes

- Added BindingCategory to give type-specific dispatch off target type
- Refactored AbstractBindingFactory
- Added PropertyBindingSpecification