add limitswitch logic; start handling errors

*add a limitswitch library (WIP)
**handle cases where limitswitches are hit in ArmLibrary
*start handling internal errors
**when an error occurs, ArmLibrary will fall back to a limping version
of the previous mode