Separate struct tpool_task from queue nodes

The struct tpool_task is now public, although the public functions do
not use it yet.  Internally, the submit function and workers now
exchange the whole structure with the queue rather than passing the
pieces separately.  The queue internally wraps the whole structure into
a node with its future.
Refactor tpool_submit to use struct tpool_task

This is the user-visible part of the change and allows clients an easier
interface to start tasks: just fill in the structure and then submit the
whole structure.
Take copy of user-supplied tpool_task structure

We can't trust that user-supplied structures came from memory that will be
available when the structure is needed later, so we allocate memory from the
heap and take a copy so we know that it will be available later.
Merge branch 'task-struct' into develop

* task-struct:
  Refactor tpool_submit to use struct tpool_task
  Separate struct tpool_task from queue nodes
Add testcase for task without future
Refactor test program to use only 1 task function

This simplifies the test program dramatically.
Merge branch 'fixtestapp' into develop

* fixtestapp:
  Refactor test program to use only 1 task function
  Add testcase for task without future
Merge branch 'hotfix-0.1.1' into develop
Add TPOOL_WAIT option for future_get and shutdown

The future_get() function previously always blocked; now it blocks only
when flags & TPOOL_WAIT is true.

The tpool_shutdown() function previously always returned immediately
without waiting for threads to shut down.  Now, if flags & TPOOL_WAIT is
true, tpool_shutdown() will wait for all threads in the pool to
terminate, after disallowing any new tasks in the thread pool.
Update test program to use new API with TPOOL_WAIT
Merge branch 'hotfix-0.1.2' into develop
Port to autotools
Rename functions to match expected standard
Hide all internal symbols, use symbol versioning
Final changes before new release with autotools
Update gitignore rules