fixed the graphical Roomie desktop application's window name
refactored HomeAutomation command code
renamed SingleDeviceControlCommand to HomeAutomationSingleDeviceCommand
and fixed the file name to match
added retries to single-device home automation commands
added unit tests for TextScriptCommand to fix a bug
TextScriptCommand was only parsing the first parameter
first steps to make command argument types extensible
 * Defined IRoomieCommandArgumentType, which has several implementations in the Roomie.Desktop.Engine.RoomieCommandArgumentTypes namespace
 * Made RoomieCommandArgument.Type of type IRoomieCommandArgumentType instead of String
 * Made and used a temporary String-to-IRoomieCommandArgumentType conversion method (Later I will have to update all of the ParameterAttributes on the RoomieCommand subclasses to use the new class types instead of strings)
 * Updated RoomieCommand to use the new Validate methods that are specified in IRoomieCommandArgumentType
a bit of refactoring around argument types
also added list of argument types to RoomieEngine
even more types refactoring
 * It looks like ParameterAttribute won't be able to directly reference the class types :(
 * Gave each type a public const string Key for use by ParameterAttributes above RoomieCommands so that at least that reference can be checked by the compiler
 * Added Commands.ValidateParameters that will check the parameter types at runtime
 * Referenced the types in the new way in Core.Beep
replaced literal string "Boolean" references in ParameterAttributes with BooleanParameterType.Key
referenced StringParameterType.Key instead of "String"
referenced TimeSpanParameterType.Key instead of "TimeSpan"
augh... and the rest too!
created StingParameterType to be used instead of [Parameter("Name", StringParameterType.Key, "Default)]
Even better than the solution from earlier today!  I also did this update with this super fancy regular expression:

find: \[Parameter\((.*?), StringParameterType.Key
replace: [StringParameter($1
did the same thing for boolean parameters
Forgot to mention: I also did a "find all usages" on the BooleanParameterType.Key to catch the subclasses of ParameterAttribute that specified BooleanParameterType.Key
added and used ByteParameterAttribute, DateTimeParameterAttribute, IntegerParameterAttribute, and TimeSpanParameterAttribute
cool!  This new scheme allows me to make IntegerParameterAttribute's default be an actual integer
made BooleanParameterAttribute's default parameter a boolean
hooray for the compiler checking more things!
woohoo!  the types are no longer linked by strings.
I had to do some dancing around limitations of Attributes, but this works.
created an integer range type and used it with the Core.Beep command
added DeviceAddressParameterType