Parenthesize selected expression

https://code.google.com/p/speedcrunch/issues/detail?id=501

The feature is triggered with Control-P.
If no selection is present, the entire expression will be wrapped.
Add a bit field widget for visual binary number composition

https://code.google.com/p/speedcrunch/issues/detail?id=348
Few BitField fixes

- Add new sources to CMake.
- Improve bit tooltip, no translation required now.
- Fix copyright and add Sébastien Szymanski to credits in about box.
- Code clean up and style fix. Includes fixed headers for Qt5 compilation.
Add support for real numbers in all supported radices

https://code.google.com/p/speedcrunch/issues/detail?id=445

Example: 0b10.01
Add tests for any-base fraccional input support
Fix wrong digit grouping after radix character

https://code.google.com/p/speedcrunch/issues/detail?id=478

It did not work correctly with comma, only with dot.
Add right parens, place cursor on left when inserting or completing functions

https://code.google.com/p/speedcrunch/issues/detail?id=494
Use the same font on both the result display and the editor

https://code.google.com/p/speedcrunch/issues/detail?id=495

This requires adjusting the height of the editor dynamically on font change.
Create and delete the BitField widget dynamically
Shift bitfield bits on up/down wheel events
Preview bitfield numbers in hexadecimal format in the editor, instead of binary
Fix editor resizing when changing font point size with Shift+Wheel

This is a follow-up to revision c0d535b where zooming works well only with
Shit+Arrows.
Add option to not save window position on exit

https://code.google.com/p/speedcrunch/issues/detail?id=502
Make float_round return an error and set result to NaN when number too big

https://code.google.com/p/speedcrunch/issues/detail?id=498
Add support for user functions

https://code.google.com/p/speedcrunch/issues/detail?id=38

The following syntax is used for user function assignment:
  fname(arg1;arg2;..) = expression
For example:
  test(a;b) = ceil(a * b - 10)

The name of the user function and its arguments are checked so that the:
  - name of the function is not the name of a built-in function or constant
  - name of the function is not already used by a variable (a similar check
    is made when creating new variable).
  - name of each arguments is unique for that function.
  - name of each arguments is not the name of a built-in function or constant

When an argument has the same name as a variable, identifiers with that name in
the user function expression refer to the argument. It is up to the user to
choose arguments names that don't collide with variables that the user
functions need.

When assigning a user function, its expression is (pre-)compiled, and the
resulting opcodes and lists are stored, and will be used later when the function
is called. In order to check for errors (syntax and semantic), a partial
execution of the function expression is done too. As some identifiers have an
undefined value at setting time (i.e., arguments, and variables or user
functions not defined yet), the result of that execution is often NaN. Thus, the
NaN result is allowed during the evaluation of user function assignments.

User function recursion is not allowed, as there's no way to stop the recursion
with the current SpeedCrunch operators/functions. However, references to other
user functions are allowed in user function expressions.

User functions with no arguments are allowed (e.g., "test() = 12"). This kind of
functions act as variables, except their value is updated in real time:
  a = 1
  b = 3 * a
  a = 2
Now, 'a' is 2, but 'b' is still 3, which is different from "3 * a".
  a = 1
  b() = 3 * a
  a = 2
Now, 'a' is 2, and 'b()' returns 6, which is equal to "3 * a".

Add user functions persistence between sessions (configurable).
Add user functions load/save through SCH files.
Bump the SCH version number to "0.12".
Add a dockable widget to manage user functions (based on Variables widget).
Raise the state label as it does not show otherwise on Ubuntu.
Add user functions support to auto-completion.
Show user functions signatures when the user is using it (like built-ins).
Add reset, invert and shift buttons to the bitfield widget
Add forgotten sources in change c4a8824 Add support for user functions
Add Steven Honeyman to credits
Fix Qt5 support broken by the 'User Functions' feature addition

Nothing major, just some includes using the old style.

Signed-off-by: Steven Honeyman <stevenhoneyman@users.noreply.github.com>
Add ability to do "make install" after "qmake speedcrunch.pro"

Signed-off-by: Steven Honeyman <stevenhoneyman@users.noreply.github.com>