UI Fix: Whenever songs are loaded into playlist and the play button is
pressed, the first song will play and is also highlighted in the window.

The database-library-playlist metaData syncing when metaData is changed
in the playlist is still broken.
1) Scraped dynamic fetching of library information via fetchMore() and
canFetchMore(), it's very troublesome to maintain libraryModel's data
invariant (item_counts) with this.

2) Instead, we do dynamic fetching by invoking beginInsertRows() and
endInsertRows() for every item inserted. The row and QModelIndex() is
found by implementing methods in TreeItem such that given the relevant
Artist or Song node information, we can figure out where it sits in its
parent's ChildItems list.

3) Every call using addEntryToModel() method maintains the order of all
the nodes' children by calling TreeItem::insertChild() with the correct
position. This maintains the order of the library.

4) Given this, it's easy to sync the metaDataChange between the playlist
and the library and the database!

-----------------
Fixed a bug where pressing ESC to cancel the dialog from pressing
playlist's "open()" button segfaults. This is done by adding an extra
check in the curMediaIdx update clause in addMedia().