organize headers
remove old function no longer used
remove pointless wrapper function of full_fwrite
large file support and simplifications
convert to new copy_stream.[ch] API
remove old versions of copy_stream/stringtools
Use our random library.
Use correct errno for invalid op on Parrot fd.
Add missing headers.
Remove unnecessary wrapper.
Merge remote-tracking branch 'ccl/pull/566/head'

* ccl/pull/566/head:
  remove old versions of copy_stream/stringtools
  convert to new copy_stream.[ch] API
  large file support and simplifications
  remove pointless wrapper function of full_fwrite
  remove old function no longer used
  organize headers

Conflicts:
	dttools/src/copy_stream.c
Fix compiler error from changed interface.

Use new buffer_dupl instead.
Skip Weaver if an appropriate python is not found.
(Avoids a complete build failure.)
Merge pull request #600 from dthain/master

Skip weaver if python not found.
whitespace
Return bytes added to buffer.
Include full dirent information for getdents.

Also fixes the kernel structure definition and d_reclen.

From #593:

    Parrot currently discards information returned in the dirent structure by readdir, for the local service. Right now, it only cares about dirent.d_name.

    This causes a problem for glibc's implementation of
    sysconf(_SC_NPROCESSORS_CONF) in __get_nprocs_conf. __get_nprocs_conf relies on
    the sysfs file system returning the file type in dirent.d_type, specifically
    looking for CPU directories like cpu0. Because all entries returned by Parrot
    look like regular files, glibc thinks there are 0 cpus and returns 0.

    This causes OpenCL to fail to run because it depends on this value for scheduling. This has caused problems for Dan Bradley, reported in [1].

    The fix for this will be to save all of the dirent information we can and pass that on to applications.

    [1] https://listserv.nd.edu/cgi-bin/wa?A2=ind1410&L=CCTOOLS&F=&S=&P=5902

Fixes #593.
Optimize dirent size and batch copy out.

On Linux, the kernel dirent structure looks like:

struct {
    uint64_t d_ino; /* uint32_t for getdents on i386 */
    uint64_t d_off; /* uint32_t for getdents on i386 */
    uint16_t d_reclen;
    char d_name[]; /* variable size */
    char padding[]; /* to ensure 8-byte alignment */
    uint8_t d_type; /* useful on supported file systems... */
};

The structure must be 8-byte aligned. [For i386, it may be 32-bit aligned but
expanding the padding to 64-bit alignment is harmless and keeps things
consistent.]

Because of d_type being at the end, it's not very useful to define these fields
in a structure (since the structure size changes depending on d_name). So
pfs_dispatch*.cc now just explicitly writes out the fields into a buffer.

All of the dirents are batched into one large write for the copy out. This is a
performance optimization (as is this whole commit).

Lastly, the maximum size of the getdents buffer is 64K. glibc only ever uses
32K so this seems like a safe limit.