Locking user-keys, Part 1

Rename Model._selfKey to Model._key.  This is by far the largest textual
change, affecting most files.
Define a class Lockable, and have Model, Frame, OldModel, and ValueArray
inherit from it.  Lockables have a Key field, and are assumed to have
sub-Keys, and can be locked, unlocked, lock-status queiries, created &
deleted (with sub-parts somewhat atomically deleted).
Disallow UKV ops on Lockables, instead you must use the equivalent
Lockable ops which enforce the locking rules.
Currently all lock *implementations* are empty, and do not lock.  This
putback is "shallow" in that all only paths that make or delete
Lockables are changed - there's no deep invariant being enforced here.
Merge
Test should stall for cloud
A few missing Lockable-vs-UKV in optional tests
First test in test_junit.py needs to stall_for_cloud

Or else cloud locks at size=1, and later tests all die
Add the initial type objects to the base set in TypeMap.
One more Lockable remove
Upload Frame needs the Lockable
Upload Folder for new API needs lockable
Lockable.delete handles VA & byte[] equally well
Predict gets Lockable
Merge