Add code to support doing finer grained movie updates, and use it with JSON-RPC [ticket #14967]

This request contains updates to support finer grained move updates via the JSON RPC interface SetMovieDetails.

Currently the code deletes most of the existing movie information and rebuilds it.  This causes a lot of unnecessary churn when one item is actually changed.

This code adds the ability to update only the items that have changed.  This reduces the time for carrying out an update dramatically in many cases.  MillhouseVH did some testing on a raspberry pi, and found the timing change for updates in some cases dropped the times from 15s to 150ms:
http://pastebin.com/raw.php?i=7isML2xb

The time improvement varies depending on the updates being done, and the size of the current data.

More details can be seen in the forum thread:
http://forum.xbmc.org/showthread.php?tid=184411

Note the branch being pulled from was a clean branch with the changes cherry picked, and then some tidy up and refactor done.

The code has been tested on windows and compiled on linux.