Optimize BinaryStringToBitBlockList
Optimize BinaryStringToBitBlockList

This is inspired by the stack trace of #207 where BinaryStringToBitBlockList is mentioned.
Often logic can be written quite concise using Linq.
When asking about raw performance Linq is almost never the answer.

I tried benchmarking the current implementation against this one using BenchmarkDotNet.

```
| Method |       Runtime |        Mean |     Error |    StdDev | Ratio |  Gen 0 | Gen 1 | Gen 2 | Allocated |
|------- |-------------- |------------:|----------:|----------:|------:|-------:|------:|------:|----------:|
|    Old |    .NET 4.7.2 | 11,685.9 ns | 132.05 ns | 123.52 ns |  1.00 | 3.3112 |     - |     - |   10439 B |
|    New |    .NET 4.7.2 |    216.9 ns |   2.66 ns |   2.36 ns |  0.02 | 0.1810 |     - |     - |     570 B |
|        |               |             |           |           |       |        |       |       |           |
|    Old | .NET Core 2.1 | 10,543.3 ns | 153.23 ns | 135.84 ns |  1.00 | 2.9907 |     - |     - |    9456 B |
|    New | .NET Core 2.1 |    205.4 ns |   1.87 ns |   1.75 ns |  0.02 | 0.1805 |     - |     - |     568 B |
|        |               |             |           |           |       |        |       |       |           |
|    Old | .NET Core 3.1 |  9,035.3 ns | 103.41 ns |  96.73 ns |  1.00 | 2.7924 |     - |     - |    8792 B |
|    New | .NET Core 3.1 |    202.3 ns |   1.69 ns |   1.49 ns |  0.02 | 0.1554 |     - |     - |     488 B |
```

As seen this implementation is ~50x faster and memory allocations is reduced by ~18x.

codebude/QRCoder