Commands

Replaces the command list data structure with an array. Commands specify a pass and are separated when creating the potentially visible set and binned into frustums.

This is from #1340. It has been reviewed, tested, and is ready for master.