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.