Add support for non-auto release to button
This allows better control of key press length, if needed.
To minimize negative effect on existng code, if the duration
argument of button_press is non-zero, functionality is kept as is
(i.e., using auto-release). If duration is set to zero, then button
will have to be explicitly released using a new API function,
button_release.
If simulation uses GLUT, it may make use of glutKeyboardUpFunc and
glutIgnoreKeyRepeat (in addition to glutKeyboardFunc found in
existing examples) to have more exact control over button presses
and releases.