Transient mark mode

delete-forward-char and delete-backward-char obey Transient Mark mode: if a region is selected, either command, if called, will delete (or kill) that region. 

The hungry-delete equivalents do not currently obey that behavior. This patch adapts code from the original functions to do so. I think this works, although the implementation may leave something to be desired.

Also, delete-backward-char has some code that untabifies text if overwrite mode is on, but that requires a prefix argument to implement.