--gc:orc --threads:on slower than --threads:off
Firstly: Thank you for working on this project. It is a wonderful framework to use, and I am using it in production, rather than Jester.

The issue: The bit of code below is slower with threads than without, when built using `orc`.

NOTE: The issue is also present when NOT using a `{.threadvar.}` although less pronounced than with `{.threadvar.}`.
`resp htmlResponse("<h2>Welcome to Prologue</h2>")`:
Non-threadvar single-thread: 28970 req/s
Non-threadvar multi-thread: 16319 req/s (1.7x slower)

threadvar single-thread: 22371 req/s
threadvar multi-thread: 6406 req/s (3.49x slower)

### Nim version (latest devel)
```
nim --version
Nim Compiler Version 1.5.1 [Linux: amd64]
Compiled at 2020-10-16
Copyright (c) 2006-2020 by Andreas Rumpf

git hash: 6b8baab536d25c744150e0190d2e172165faf92e
active boot switches: -d:release
```

### system info:
```
OS: Arch Linux 
Kernel: x86_64 Linux 5.8.8-arch1-1
CPU: Intel Core i5-6200U @ 4x 2.8GHz [41.0°C]
GPU: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)
RAM: 5680MiB / 15739MiB
```

Testing with `wrk -t2 -c100 -d10s http://localhost:8000`

### Using --gc:orc (multi-threaded has lower throughput)
#### `nim c -r -d:danger -d:release --opt:speed --gc:orc main`
```bash
Running 10s test @ http://localhost:8000
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     4.93ms    3.56ms  85.98ms   82.41%
    Req/Sec    11.27k     0.93k   13.46k    76.50%
  224424 requests in 10.03s, 104.45MB read
Requests/sec:  22371.13
Transfer/sec:     10.41MB
```

#### `nim c -r -d:danger -d:release --opt:speed --gc:orc --threads:on main`
```bash
Running 10s test @ http://localhost:8000
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    17.24ms   12.43ms 110.90ms   87.82%
    Req/Sec     3.23k   413.09     4.39k    81.50%
  64325 requests in 10.04s, 29.94MB read
Requests/sec:   6406.63
Transfer/sec:      2.98MB
```

### Using --gc:markAndSweep (multi-threaded has more throughput as expected)
#### `nim c -r -d:danger -d:release --opt:speed --gc:markAndSweep main`
```bash
Running 10s test @ http://localhost:8000
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     3.59ms    1.89ms 101.07ms   98.98%
    Req/Sec    14.21k     1.29k   15.80k    94.50%
  282931 requests in 10.03s, 131.67MB read
Requests/sec:  28206.92
Transfer/sec:     13.13MB
```

#### `nim c -r -d:danger -d:release --opt:speed --gc:markAndSweep --threads:on main`
```bash
Running 10s test @ http://localhost:8000
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.12ms    1.75ms  23.15ms   90.73%
    Req/Sec    26.01k     1.72k   29.89k    68.50%
  517948 requests in 10.04s, 241.05MB read
Requests/sec:  51598.09
Transfer/sec:     24.01MB
```

### Example code:
```nim
import prologue
import nwt

let settings = newSettings(
  address="0.0.0.0",
  debug=false,
  port=Port(8000),
  staticDirs=["/static"],
)

var app = newApp(settings=settings)

## Set up threadvar for `templates` for per thread initialization.
var templates {.threadvar.} : Nwt

proc initTemplates() =
  if templates.isNil:
    templates = newNwt("templates/*.html")

proc index(ctx: Context) {.gcsafe, async.} =
  initTemplates()
  resp templates.renderTemplate("index.html")

app.addRoute("/", index)

app.run()
```