Make CustomLabelFormatter more flexible and powerful

- Gives CustomLabelFormatter as much information as the existing default format implementation
- Hides some of the details that don't need to exist in the GraphView proper
- Add a new predefined format for a typical use case as an inner class on the interface
- Pave the way for defining more useful builtin formats in a singular location