movement equivalence classes

These can be used as a basis for a bunch of pathing optimizations.

- Feasability of movement can be precomputed for each class, avoiding
  the worst-case pathfinding behavior

- A path could potentially be shared between all members of a class.
  This isnt necessarily the best path for any single unit, as it
  doesn't care about efficiency of movement across various terrain --
  but it would be a "reasonable" path that the whole group could take
  together.

- General pathing checks can be converted from intersection of sets of
  strings to a simple AND.

- Other, wilder things.

V2: be paranoid about too-long bit vectors.
Merge pull request #3474 from chrisforbes/movement-equiv-classes

movement equivalence classes
Merge pull request #3472 from pchote/renderer-regressions

Fix renderer regressions
Merge pull request #3475 from pchote/startgame-fix

Startgame fix and observer tweaks.
Reduce RA oil derrick capture bonus from $500 to $100
Merge pull request #3477 from ScottNZ/bleed

Reduce RA oil derrick capture bonus from $500 to $100
Handle failure cases of Socket.Send. Fixes #3455.