Cast write(2)'s -1 to (size_t) to avoid sign mismatch warning.
Improve throughput of find_longest_match.

*comment on rebase*
Code style cleanup: _always_ brace `if`s, extract NO_BITS constant.
(BUG) Improve index construction and eliminate redundant compare.

1. Instead of storing an offset to the previous matching byte in the
   index, store the next matching byte bigram. Since the compression
   doesn't break even unless at least 3 bytes match, any single-byte
   matches in the index should just be skipped.

   Since this eliminates these false positives in one pass, it also
   removes work that would otherwise be done during every walk of the
   index's offset chain - possibly several times. This greatly
   reduces the time spent in find_longest_match().

   EDIT: This prematurely discards information from the index,
   damaging the overall compression effectiveness. Some of the
   links being skipped are still necessary for other chains, so
   they cannot be eliminated this way. It's still possible dynamic
   programming can be used for this, but the strategy in this
   commit doesn't quite work.

2. Eliminate the test of the first byte, since indexing already
   incorporates this comparison ahead of time.
Only call push_bits if count is > 0.
If calling push_bits w/ 8 bits at beginning of new byte, just copy byte over whole.

This can save a significant amount of time in push_bits, particularly if -w is 8.
Improve throughput of encoder. Also, decrease HEATSHRINK_MAX_WINDOW_BITS to 15.

Eliminate some unnecessary comparisons by making the position in the
index signed, and treating any negative value as not found, not just
((uint16_t)-1). Also, decrease HEATSHRINK_MAX_WINDOW_BITS to 15, so
index values with the highest bit set can be used as working space
for index optimization on the fly (some day).

Use 'if length >= 3' instead of 'length > 2' for the break even point,
sinec it makes the intent clearer, and pull the comparison outside of
the inner loop.

Increase HEATSHRINK_MIN_LOOKAHEAD_BITS to 2, since -l 1 won't compress.
Also, eliminate the corresponding MAX #define, since it has to be <= the
window size anyway.

Use a separate *pt == *pt2 instead of pt[0] == pt2[0] for comparison of the
leading byte, which should allow for better branch prediction.

Eliminate 'needle_index' in the inner loop -- it's only aliasing 'end'.

Also, add comments about the indexing strategy.
Eliminate redundant comparison, index ensures first byte matches.
Update non-indexed matching to use an int16_t pos.

Also, update index type to int16_t.
Remove unused static library target from Makefile
Increase version to 0.3.0 due to interface change (-w limit change).