Fixup qio for error codes, plugin functions

[reviewed by Tim]

I've been meaning for a while to update all the QIO functions to return
qioerr (which Chapel calls syserr) instead of err_t. The qioerr/syserr
is a pointer-to-constant-static data (ie data that is part of the program
image) that can have an error message and now function, filename, line number.
This patch makes the change and improves error messages for many QIO errors.

Also I started to write a QIO plugin myself, and noticed that the plugin
API was not as pleasant to use as I had hoped. So here I refactor it to 
allow the function table to be const static, to store a "filesystem" void*
(called fs_info) in a qio_file, and to pass the fs_info as the last argument
to all of the QIO plugin functions.

Lastly I made a minor change to how QIO plugin files are initialized when
there is no seek function available. Now the file will be marked seekable
if the flags argument requested that. This allows a HDFS use case - where
read-only files are seekable but writeable files are not.

These changes will definately break the HDFS integration, but Tim knows
about them and is planning to fix it.

runtime/include/qio/qio.h
runtime/src/qio/qio.c
 - change plugin API so that qio_file_functions_t can be static const
   and the filesystem is stored in a qio_file and passed to the plugin
   functions.
 - change qio_file_init_usr (called from qio_open_usr) to keep a file
   seekable if QIO_FDFLAG_SEEKABLE is set, even if there is no seek
   function (or the seek failed). Using this flag should be able to remove
   some special-case HDFS code from qio.c


modules/standard/Error.chpl
modules/standard/Buffers.chpl
modules/standard/IO.chpl
 err_t -> syserr (which is the Chapel name for qioerr)

runtime/include/qio/qbuffer.h
runtime/include/qio/bulkget.h
runtime/include/qio/qio_formatted.h
runtime/include/qio/qio_regexp.h
runtime/include/qio/deque.h
runtime/include/qio/qio.h
runtime/src/qio/deque.c
runtime/src/qio/qio.c
runtime/src/qio/regexp/none/fail-regexp.c
runtime/src/qio/regexp/re2/re2-interface.cc
runtime/src/qio/qbuffer.c
runtime/src/qio/bulkget.c
runtime/src/qio/qio_formatted.c
 err_t -> qioerr
 add error messages for most QIO-generated errors

runtime/include/qio/qio_error.h
 add function, file, line to constant error message structure
 (although these are not currently printed out, they might
  be useful in debugging).
 make double-checking of error codes turned off by a #define
 add QIO_ENOMEM, QIO_ESHORT, QIO_EEOF for easy access to
 qioerrs for those common situations.
 
test/
 update error messages that got more descriptive




git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@23786 3a8e244f-b0f2-452b-bcba-4c88e055c3ca