Adding destructuing variable assignment.

* Reworking Evaluator::Assign to provide additional features.
    * Moving original functionality to Evaluator::SetSymbol
    * Adding checking for valid symbols to Evaluator::SetSymbol using Evaluator::IsValidSymbol
    * Adding Evaluator::DestructuringAssign, which will assign a data grid into the names in the grid of an variable assign cell.
    * Turning Evaluator::Assign into a convience function.
    * Updating Grid::EvalGridCell to work with new functionality.
* Adding const where appropriate to large portions of Cell and any new code.
* Adding comments as I learned non-obvious information.