tests: Add a simple test-sysroot.js that covers OSTree.Sysroot

This will be more interesting as a test case user of the API.
sysroot: Support more arbitrary deployment changes

This commit changes the sysroot API so that one can create arbitrary
new deployment checkouts, then commit them as one step.  This is to
enable things like an automatic bisection tool which say create 50
deployments at once, then when done clean them up.

This also moves some printfs from the library into src/ostree.
sysroot: Update some annotations

We were double-freeing before.
sysroot: Avoid bad double-free

If a deployment is somehow in the list twice, the hash table will free
the *new* value with g_hash_table_insert which gets all broken.  Just
use g_hash_table_replace().
sysroot: Ensure we create /boot/loader.%d/entries even if there are no deployments

Not doing so breaks things, and we should support this.
sysroot: Move ostree_sysroot_origin_new_from_refspec here

Rather than having it live in admin.  This is useful for other
consumers like the test suite.
tests: Extend test-sysroot.js further

Now covers a lot more of the API.