adding a DBPut interface for standardizing how puts should be

done to the database, where a put is an update if the row already
exists or an insert if the row does not exist.
I think we need to restructure this like we discussed to have uniform semantics for DBQueryExecutor. Since here the statement gets automatically closed in executePut, but in most other methods it does not. 

One more method where it gets automatically closed is getQuerySet.

Also - we document this behavior in DBQueryExecutor.