add mkostemp, mkstemps, and mkostemps functions and reorganize temp internals

based on patch contributed by Anthony G. Basile (blueness)

some issues remain with the filename generation algorithm and other
small bugs, but this patch has been sitting around long enough that I
feel it's best to get it committed and then work out any remaining
issues.
remove leftover unused variable in mktemp after refactoring
fix error cases in mkostemps core

1. wrong return value and missing errno for negative suffix len
2. failure to catch suffix len > strlen
3. remove unwanted clearing of input string in invalid case
use memcmp instead of str[n]cmp for temp function XXXXXX checking