Further SongFile improvements

* Expand path at the time the object is created, rather than carrying
  around a relative path.
* Add new #size, #dirname and #exist methods, to help wean consumers
  off of #to_pn conversions. Unfortunately a few #to_ses are still
  required due to an FFI limitation. The path methods return strings
  since that's what is expected by the objects which use SongFiles.
Player: convert objects to SongFiles on creation