RFC: catkinization and updates

I've catkinized the sonar_layer because I'm a catkin fanboy. I can catkinize the rest if you'd like, or pull those commits out of my PR if you're prefer to stick with rosbuild.

More interestingly, I'm interested in using the sonar layer as a local costmap layer on my robot, in conjunction with a laser scanner and an obstacle layer. I have three front-facing sonars that overlap my laser, and two rear-facing sonars that don't.

I've updated the sonar layer so that it works as a local costmap layer (taking into account the robot's position), and I've updated the sonar model so that it takes into account the angle that the sonar is mounted at.

When using the sonar layer by itself, it produces a reasonable map and accumulates free and obstacle probabilities in a reasonable way.

When I start trying to combine the sonar layer with a regular obstacle layer using lidar data, things start getting weird. It looks like the unknown space in the sonar layer are overriding free/raytraced space in the obstacle layer. I'm not sure I understand the new costmap structure well enough to proceed on this. Are all of the layers operating on the same costmap, or do they each maintain their own costmap internally, with the merging handled elsewhere? (If this is documented elsewhere, feel free to link to me to manual and tell me to RTFM).

General thoughts?