System.Numerics based implementation of GetProofOfWorkReward function produces incorrect reward values.
OpenSSL:
```
bnUpperBound=
100000000, bnLowerBound=
50005000, bnMidValue=
50005000
bnUpperBound=
75002500, bnLowerBound=
50005000, bnMidValue=
75002500
bnUpperBound=
62503750, bnLowerBound=
50005000, bnMidValue=
62503750
bnUpperBound=
56254375, bnLowerBound=
50005000, bnMidValue=
56254375
bnUpperBound=
56254375, bnLowerBound=
53129687, bnMidValue=
53129687
bnUpperBound=
54692031, bnLowerBound=
53129687, bnMidValue=
54692031
bnUpperBound=
54692031, bnLowerBound=
53910859, bnMidValue=
53910859
bnUpperBound=
54301445, bnLowerBound=
53910859, bnMidValue=
54301445
bnUpperBound=
54301445, bnLowerBound=
54106152, bnMidValue=
54106152
bnUpperBound=
54301445, bnLowerBound=
54203798, bnMidValue=
54203798
bnUpperBound=
54301445, bnLowerBound=
54252621, bnMidValue=
54252621
bnUpperBound=
54301445, bnLowerBound=
54277033, bnMidValue=
54277033
bnUpperBound=
54301445, bnLowerBound=
54289239, bnMidValue=
54289239
bnUpperBound=
54295342, bnLowerBound=
54289239, bnMidValue=
54295342
```
System.Numerics:
```
bnUpperBound=
100000000 bnLowerBound=
50005000 bnMidValue=
50005000
bnUpperBound=
75002500 bnLowerBound=
50005000 bnMidValue=
75002500
bnUpperBound=
62503750 bnLowerBound=
50005000 bnMidValue=
62503750
bnUpperBound=
56254375 bnLowerBound=
50005000 bnMidValue=
56254375
bnUpperBound=
56254375 bnLowerBound=
53129687 bnMidValue=
53129687
bnUpperBound=
54692031 bnLowerBound=
53129687 bnMidValue=
54692031
bnUpperBound=
54692031 bnLowerBound=
53910859 bnMidValue=
53910859
bnUpperBound=
54301445 bnLowerBound=
53910859 bnMidValue=
54301445
bnUpperBound=
54301445 bnLowerBound=
54106152 bnMidValue=
54106152
bnUpperBound=
54301445 bnLowerBound=
54203798 bnMidValue=
54203798
bnUpperBound=
54301445 bnLowerBound=
54252621 bnMidValue=
54252621
bnUpperBound=
54301445 bnLowerBound=
54277033 bnMidValue=
54277033
bnUpperBound=
54301445 bnLowerBound=
54289239 bnMidValue=
54289239
bnUpperBound=
54301445 bnLowerBound=
54295342 bnMidValue=
54295342
```
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.IO;
-using System.Numerics;
+using System.Numerics; // TODO: implement wrapper for BouncyCastle implementation of BigInteger and use it instead. This is necessary due to incompatibility of System.Numerics.BigInteger with OpenSSL.
namespace Novacoin
{