Huge code rearrange, plus new api urls

Did a huge rearange of the code, pushed a lot of functionality through
the dlna object and into static helper methods. This is partially in
preperation for requiring different behaviour for different clients
(xbox, ps3, etc) and partially because the code was a mess and really
needed cleaning up.