Improved errno handling

Or so I'm trying to make you believe. :)

This tries "__errno_location" as a function for systems that have it,
then "__errno" as a function for systems that have it (cygwin for
example) and then the classic "errno" variable as a fallback.

If all fails, the following definition is used:

  (define (get-errno) 0)

Which isn't particularly useful for diagnostics, but makes the
module work on systems that aren't otherwise supported yet.

Signed-off-by: Frank Terbeck <ft@bewatermyfriend.org>