board edit: disallowing blank board name. derr
Syncing fixes

have yet to see another "missing board key" bug, and this is after hours
of testing and retesting. the bug was fairly prominent to the point that
i would have seen it 10-20 times by now. i'm willing to bet that it's
gone forever.

also:

- Fixing bug where if ADD response comes back *after* ignoring the item
  via local sync and *before* the local sync happens, item in mem will
  never have its ID properly set. fixed by removing CID comparison in
  the should_ignore call when syncing db -> mem. it now only searches
  for item.id, narrowing the search field to weed out this case.
- note that the above casued an issue where deleting an item that never
  had its id properly set would delete it from memory (ie, it's
  seemingly gone) but would never sync to the local db because composer
  doesn't actually call model.sync when you destroy a model that's
  is_new() == true (which makes sense and is acceptable behavior). this
  is now fixed...items added will always have their in-memory
  representation updated with the ID from the API when created.
- moved a lot of logging to the central functions instead of overriding
  for each model/collection. the logging is becoming less and less
  relavent now as the syncing processes seem to all be doing their jobs
  admirably. in fact, i haven't seen one anomoly or issue with the
  syncing since adding the new sync table in the api and granularizing
  the keychain.
- updating sync function(s) a bit. local sync now has skip_local_sync
  which when called with a destroy just returns, otherwise will save the
  data to local db BUT not set the last_mod time. useful if you're
  syncing data from db -> mem and you need to call destroy or save and
  you don't want to sync from db -> mem -> db a bunch of worthless
  times.