Crate updates.

+Multiple units per crate allowed.
+Allow time delay on crate actions.

Rebased work of #2550 and corrected the Lint error. (For #2165)

Also added work for #3054.

If the extended requests are wanted, I'll take a look at them.
-Allow multiple time delays, with their own selectionShares. (<- I admit I didn't look into this.)
-Prevent crate actions based on prerequisites. (<- I couldn't figure out how this would work.)
I'd do it the other way: assign unit to tmpUnit, and have tmpUnit (possibly 'u' to be consistent with the other applications of this pattern in the codebase) as the iterator variable.