Song should behave like an ActiveRecord model

By accepting a Hash instead of a simple String path, we can
use simple Machinist fixutres for Songs instead of manually
setting all that shit up each time.
Move Artist to AR models, too
Album gets the treatment, too
Can remove this now
Merge branch 'v3' into v3-api