Fallback value changes

These changes modify the binding so that:

- the fallback value is used if valueconversion fails
- enum conversion (string parsing) can be applied to the fallback conversion
- a default(T) value is used as a fallback if no fallback value is specified (for Visibility this will mean `Collapsed`

These changes are in theory complete - but testing is needed before merging them back in.