Use a more reliable method to get the local machine's IP address.
Use new transcoder, which is better, faster and has better support for subtitles.
Use the more modern /:/timeline API for reporting progress. Only report every 5 seconds.
Make a per-ATV map of UDIDs, so we can use it as session identifier and properly stop sessions.

Not sure if there's an easier way to do this, there sort of needs to be
a shared "secret" between ATV code (JS) and server-side code, so that
the transcode URL (built by server) and stop URL (built by client) can
agree. This code works, but you need to go through the "registration"
at the top level, so if you restart the server in the middle it won't
behave properly.
Whoops, missing a bit for the device map.
Get rid of the silly registration, pass the UDID via querystring when playing.
Merge pull request #8 from plexinc/XML_templates

Adding Elan's changes: IP Address lookup, universal transcoder.
Thanks!