added and fixed some tests, made it raise an exception on failed updates

A test was catching the wrong exception (it was hiding a method not found).

I also made save return false and save! raise on an unsuccessful update.