Introduce a GenericValueSnakFormatter that dispatches to ValueFormatters based on the data type (and value type). This is what DispatchingValueFormatter currenlty does, DispatchingValueFormatter and GenericValueSnakFormatter could be conflated into a class that implements TypedValueFormatter as well as SnakFormatter.
This obsoletes the current implementation of PropertyValueSnakFormatter, which should be removed.