Fixed a crash with serpent; fixed bug in EXP opcode; some gui improvements useful for testing

Serpent compilation made AlethZero crash when parsing strings containing non-ascii characters.
Example:

    code:
        a = "però"

This was caused by a negative number being passed to intToDecimal().
I fixed it by casting to unsigned char before passing it to that function.
But then I noticed that the way such function is implemented and used makes no sense with a signed int argument, therefore I changed it to unsigned, and renamed the function (and its opposite companion) to unsignedToDecimal() in order to clarify what kind of integer it expects.

***

In order to help me better test the compiler and the VM, I also made the "code" widget selectable and copiable, and I added a debug menu entry to optionally disable compiler optimization.

***

EXP opcode was calculating things wrong because the exponent was limited to unsigned int.

E.g.:

* `(exp 3 0xffffffff) = 56793526318138574170075023295350420995556910796812557888544779909043352939179`
* `(exp 3 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) = 56793526318138574170075023295350420995556910796812557888544779909043352939179`  
_expected: `77194726158210796949047323339125271902179989777093709359638389338608753093291`_
* `(exp 2 0) = 1`
* `(exp 2 0x100000000) = 1`  
_expected: `0`_

I fixed it by using `boost::multiprecision::powm()` instead of `boost::multiprecision::pow` (which has a limited exponent by design).

***

Fixed some indentation mismatch (spaces instead of tab).
bool m_enableCompilerOptimization = true;