Added better handling of mouse and keyboard events

The spinbox now changes precision to maximum whenever the user tries to edit the
value either manually using mouse/keyboard events or programmatically. This
makes sure the precision is interactively set by the user. An appropriate signal
decimalsChanged() is fired everytime the precision of the spinbox changes.
Also added a valueAboutToBeChanged signal to notify of the imminent change in
value.