Model formatting: Refactor and fix precedence

1. Moves all formatting related code from the model into a separate class.
2. Item values take precedence over album values except for paths. Fixes #858.
Cool! I like the way this simplifies the implementation of the Model interface.