use a linker script to hide symbols.

also, build a shared library.
implement ookbrick, plus some internal reorg.

also creating an ookfile now stores the type information, so we
know how to copy things appropriately.
add 'writer' interface (unimplemented right now).
ignore object files, libraries, binaries.
implement writing as well, new test program.

abstract out 'ookbrick' into 'srcop', which takes a function
pointer so it can control in which direction the data are going.
reimplement ookbrick in terms of srcop, and implement ookwrite
by just passing in a 'write' pointer.

ookwrite doesn't need a length parameter: the length is implicit
based on the brick passed in.

the new test program is just a simple thresholding app: it writes
a new binary volume with a voxel 'on' if it passes the threshold
operation.
fix memory leak.
comment fix, explicitly initialize 'write'.
add code for testing ook.

uses check (check.sf.net) for simple unit testing.  seems okay.
implement 'write' for the stdcio interface.
reimplement srcop to work in more cases.

just copy my implementation from the dynamic bricker; I spent a
lot of time thinking about it there.
implement a bunch of tests to verify reading.