rqt_reconfigure: Re-write widget data flow

rqt_reconfigure is virtually unusable as is, and sends duplicate and unnecessary updates to the server frequently. This patch updates the PyQt widgets' structure to address many of the issues reported with rqt_reconfigure.

### Overall Changes
Added descriptions to tool tips

### Changes per-widget
##### Bool
Left Unchanged

##### String
Server is no longer updated on each change (keystroke). Instead, updates are:
* On "return" or "enter"
* On leave-focus

##### Integer
Text box is now updated as the slider moves, but updates are sent only:
* On slider mouse release
* On slider arrow key
* On slider scroll wheel
* On text box "return" or "enter"
* On text box leave-focus

##### Double
Same changes as Integer.
Additionally, a bug was fixed which caused moving the slider bar to -inf to jump to a very large positive number, and inf to jump to a very large negative number. This was fixed by inverting the logic on the scaler in order to not lose precision in the scaler.
Also, it was impossible to input very small numbers. Using python's "Decimal" class, this is now significantly better.

##### Enum
No visible changes

### Issues Addressed
This patch intends to fix these issues. Some of these issues have already been addressed and should be closed. Please verify that this patch fixes your issue in a comment.
* #56
* #101
* #123
* #178
* #185
* #188
* #207
* #208

##### Please pull and test this branch, let me know about any bugs in this pull request.