I ran into most of the issues mentioned here. I looked through the links suggested here, did some more searching, and made some experiments to see what is actually supported across my various WebRTC-supporting devices.
The key takeaways are:
1. Firefox does not take video height and width constraints, but you can specify defaults in about:config under the various media settings
2. Chrome will only choose from one of 6 pre-set resolutions
4. Make sure to stop and nullify the stream before applying new constraints, otherwise the new constraints will not take3. In Chrome, constraints are really "suggestions" - Chrome may return a resolution different than specified depending on your camera hardware