Improve os detection

`has('mac')` and `has('macunix')` are not alone enough to assert whether
the OS is running OSX. Further system calls maybe necessary to check.
Add check for multibyte support
refactor parser
further refactoring
refactor album search
Finish refactor, artist functions updated
add album uri to album data dict
add artist caching, fix up track clean