REL-726: Step one, refactor the template model.  

This is the first part of work required to make targets and conditions editable in template groups.  In particular this part only changes the model but doesn't yet add any editing features to the UI. In order to avoid a merge conflict on the template folder, and to avoid broken references to targets and conditions from template parameters, I propose updating the model as depicted here:

http://jira.gemini.edu:8080/secure/attachment/13031/REL-726.png

In summary, instead of storing targets and conditions in a map in the template folder, copies are distributed amongst the template parameters.  This is consistent with being able to edit them individually and avoids merge conflicts and broken links. Most of the changes here are mechanical but it did require that a lot of files be touched.
Yes, you're just asserting that you know more than the typechecker. Same as any cast. But you can't do `.isInstanceOf` or use a type pattern `case a : List[X] => ...` due to erasure; there is no way to distinguish `List[Int]` from `List[String]` at runtime.