Implemented update_fn and upsert

Since running a find and update separately in a concurrent environment
can lead to incorrect results, having update functions that change the
existing value can be useful.
Updated documentation and changed find method

Now the overloaded find method returns a value_type instead of a
mapped_type.