- better documentation for text methods (add_code, code_get, code_put, ...)

- documentation for BLVec

- tests for consistent die return strings
  x read unary off end of stream
  x put negative numbers should give "value must be >= 0" for all put_*
  x write with undefined value
  - put_* with undefined parameters or undef value
  - get_* with undefined parameters
  - put_string with invalid string (e.g. '0012')

- test all open modes, especially write-only

- Export

- text code needs some redoing

- tie to a file to avoid holding everything in memory.
  Either File::Map or PerlIO :mmap or Sys::Mmap

- Better documentation for Additive.

- range testing for comma and block taboo codes

- test for read_open.  Should read_open / write_open be private?  Should they
  take a hash like new?  (e.g. write_open( file=>'foo') )

- Change test library and usage to get an encoding list by stream, rather than
  a global list.

- Add BER and Varint to standard test list.
  This requires encoding lists by stream (the previous TODO).


- Sayood's NF3 codes (Lossless Compression Handbook pages 67-70).  Generalized
  Fibonacci code, with terminator change.  Can be a little shorter than the
  C2 codes, and he claims they're faster to encode/decode.

- Adaptive Golomb.

- Fenwick punctured codes

- Stout codes

- Yamamoto C(a,f)(n) codes (Yamamoto 2000)

- Pigeon's unconstrained taboo codes.  Described in taboo.ps.  Block codes are
  done.  Since the unconstrained codes have identical lengths to generalized
  Fibonacci codes, and these are efficiently implemented here and in XS, I
  don't think there is a pressing need to do these.

- Thoughts on Huffman, arithmetic

- Methods should return self, so we could do:
    say Data::BitStream->new->put_fib(@values)->to_string;

- Document BER and Varint