Allow custom parameters to be passed to spec items

The main change is to add

data SomeParam = forall a. Typeable a => SomeParam a

and then change the spec item to take [SomeParam] instead of Params.
The item can lookup the parameters by using cast on the list until
one matches.  Since we now can have separate parameters, I also split
apart the old Params into three different parameter types.
Add a SpecBracket to SpecTree that allows running a command to create
and then cleanup a parameter to pass to all child items.