lower the number of allocations in broadcastwriter

This PR changes the JSONLog marshalling to use custom code for marshalling. This helps improve performance and to lower the amount of allocated memory.

initial to V1
```
benchmark                    old ns/op     new ns/op     delta       
BenchmarkBroadcastWriter     3274647       1165596       -64.41%     

benchmark                    old MB/s     new MB/s     speedup     
BenchmarkBroadcastWriter     7.56         21.23        2.81x       

benchmark                    old allocs     new allocs     delta       
BenchmarkBroadcastWriter     7550           2510           -66.75%     

benchmark                    old bytes     new bytes     delta       
BenchmarkBroadcastWriter     590654        96739         -83.62%
```
initial to V2
```
benchmark                    old ns/op     new ns/op     delta       
BenchmarkBroadcastWriter     3274647       1148698       -64.92%     

benchmark                    old MB/s     new MB/s     speedup     
BenchmarkBroadcastWriter     7.56         21.54        2.85x       

benchmark                    old allocs     new allocs     delta       
BenchmarkBroadcastWriter     7550           1510           -80.00%     

benchmark                    old bytes     new bytes     delta       
BenchmarkBroadcastWriter     590654        64739         -89.04%
```
V1 to V2
```
benchmark                    old ns/op     new ns/op     delta      
BenchmarkBroadcastWriter     1165596       1148698       -1.45%     

benchmark                    old MB/s     new MB/s     speedup     
BenchmarkBroadcastWriter     21.23        21.54        1.01x       

benchmark                    old allocs     new allocs     delta       
BenchmarkBroadcastWriter     2510           1510           -39.84%     

benchmark                    old bytes     new bytes     delta       
BenchmarkBroadcastWriter     96739         64739         -33.08%
```

Fixes #3040
Fixes #7757
I'm fine either way.