Added emergency stop support.

I have added emergency stop support to the gazebo_ros_control and DefaultRobotHWSim plugins. gazebo_ros_control now resets the controllers when the robot's simulated hardware indicates that the emergency stop has been deactivated after being activated. DefaultRobotHWSim now subscribes to the Boolean topic specified by the eStopTopic SDF element. Messages received from the topic control the E-stop. When the E-stop is activated, the following occurs:

* If a joint's position is being controlled, DefaultRobotHWSim maintains the position the joint had when the E-stop was activated.

* If a joint's velocity is being controlled, the velocity is set to zero.

* If a joint's effort is being controlled, the effort is set to zero.

I'm realizing just now that this is an API-breaking change. If we choose to modify the API, we should then be targetting the next ROS distro, J-turtle. The practice we've been following so far to reduce developer pain is to keep API stability over a ROS release, but allow to break ABI compatibility if needed.

API stability aside, I like the idea of exposing the whole SDF to `RobotHWSim` instances so they can do plugin-specific parsing. It's the resulting `initSim` signature that I don't like much, as it has pre-parsed info like the robot namespace, which comes also from the SDF. I'm also not very fond of it having 5 (with this PR, 6) parameters, it's too much for my taste.

Straying a bit from the scope of this PR (and also thinking of the next ROS release) maybe the `initSim` signature would benefit from an API rework. I'm thinking about having a lean signature like
```c++
virtual bool initSim(gazebo::physics::ModelPtr parent, const sdf::ElementPtr sdf) = 0;
```
and then a bunch of simple, stateless helper functions to fill in the gap, like:
```c++
std::string getRobotNamespace(const sdf::ElementPtr sdf);
std::string getRobotParam(const sdf::ElementPtr sdf);
const urdf::Model* getUrdf(const std::string& robot_param);
std::vector<transmission_interface::TransmissionInfo> parseTransmissions(const std::string& urdf_string);
ros::NodeHandle getModelNodeHandle(const std::string& robot_ns); // Too trivial to even expose?
```

What are your thoughts @jim-rothrock, @jbohren, @davetcoleman?.