Use typedefs judiciously in ConstraintWarehouse.C

I definitely realize that going crazy with typedefs is a bad thing, but in this particular case I think it makes the code more readable for humans.  There is also a practical benefit: if the underlying type changes you only have to change the typedef in one place, not everywhere it's used.  Doing this is also pretty similar to the C++11 `auto` keyword where you don't actually care what the underlying type is and/or it can be inferred from the container's type...

Loosely related to #3692, but if we decide to do this a bit more in the framework we could create a new issue...