Derive copy for types that cause compile errors when moved

Now that `Copy` is an opt-in trait there are numerous compile errors
when attempting to move certain values.

This implements `Copy` for the bare minimum of types necessary
to continue compiling cleanly.
Optionally impl. copy where possible

This satisfies all areas where the lint pass shows a type can impl. copy.
Merge pull request #162 from drbawb/fix/copy-instead-of-move

Use `Copy` where moves are illegal