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.
We loose a very important distinction if we emit `'0'` instead of the empty string for `None`: The problems with replay gain values have shown that we need that distinction.