Rewrite SyncReport for clarity and performance.

- Drop the impressive but inscrutable dynamically generated code in favour of some plain old code.
- Cache type information so costly reflection need not be performed each time.
- Only capture values from a sync object into an array rather than a dictionary lookup of both names and values for efficiency.
- Throw if the sync attribute is used on a property that cannot be read or that uses index parameters.
Use expressions to generate fast member access code rather than using the slower reflection based methods.
Add MinRange plumbing to attack activities.
Added MoveWithinRange activity for Mobile units.
Use MoveWithinRange for attack activities.

Fixes #2104. Fixes #2923. Fixes #4455.
Only inset range for mobile targets.
Simplify MoveAdjacentTo pathfinding.
export health, cost and damage per section into a CSV file

closes #3855
add armor types and move calculation into spreadsheet
add weapon name
factor in burst delay
add a pure data export for non-spreadsheet applications
run ./update-wiki.sh again after release deployment

closes #5643
pushd and popd is safer here to not confuse Travis
limit replay browser dropdown box height to something sane

closes #5641
make it clear that this does not need to match content height
StyleCop
set the git user and email to avoid problems
this will never happen
NatUtility.DeviceLost is never fired