Refactorings, add support for scenes and rooms

Hey it's me again!  Remember how I asked about if you were open to more refactorings?  Well here it is!  
Before you look at his huge pull request and freak out, let me give you a little background on what we did and why.  :)

There are a handful of us at work that like to get together once a week at lunch and try to sharpen our development skills.  We saw this project and thought it was really cool because it had a good foundation and we really like the Vera as a home automation device.  We also saw that this project was lacking some testing and it's something we wanted to get better at and felt we could contribute.  Through the process of testing we also applied refactorings, really trying to increase readability and testability. (It now has 94% test coverage!)

We also added a few little features like the ability to list scenes and run them along with listing the room labels.

I hope you find this a useful contribution.  We really had a great time going through this and we learned a lot.

I apologize for doing this in one huge pull request.  If you have issues or questions with any of it, please let me know and I'd be happy to work through any of it with you.  Thanks!
I like the idea of adding a helper function like urn_value_for.  I tried to wire that up, but couldn't get it working the way I wanted, so leaving it for now.

Regarding the URN constant.  It does work out OK because the constant is scoped within the specific module... so MiOS::Services::Camera1::URN is different than MiOS::Services::DoorLock1::URN.  This still allows multiple services in one device.  I have a thermostat that is composed of multiple services and it works well.  I think the only way we would get in trouble is if we somehow had a device with the same service included twice.  I'm not sure if that's possible.