Use single set of arm/disarm code

Set mode and arm/disarm commands now call a single method to arm
disarm, thus removing code duplication. Also calls updated
arming_state_transition method such that the arming state logic does
not need to be duplicated outside of arming_state_transition.
arming_state_transition now outputs error messages

If mavlink fd is passed in method will output reason for arming failure
to mavlink.
Function naming and remove unneeded sprintf
Simpler state transition code

Also fixed ARMING_STATE_ARMED_ERROR->ARMING_STATE_STANDBY_ERROR
transition.
Rewrote to provide better feedback

Also allows variables as well as static text for assert text in
ut_assert
Fixed bug with transition from in air restore to armed

Also added better debug output for invalid transitions
Update to convert to C++ style
Added comprehensive arming_state_transition unit test

Also converted full to C++ style. Also converted to new unit test code.
Fix float equality comparison

Also restructured incorrect return statement
Merge pull request #749 from DonLakeFlyer/ArmDisarm

Arm/Disarm duplication removal and support for Disarm in VEHICLE_CMD_COMPONENT_ARM_DISARM