move symlinked files to .gitignore
speed up option processing by using precomputed hash value

We do a LOT of hash lookups every time we encode. This is the first
step in speeding this up.

This is complicated by the fact that we have ordering dependencies
in the option processing in various places.

By precomputing hash values for the keys we lookup we save a fair
number of cycles. We still could do better.