Refactoring portallocator

Faster, more documented, less code.
Benchmark results:
```
bin/benchcmp old.txt new.txt 
benchmark                  old ns/op     new ns/op     delta       
BenchmarkAllocatePorts     14982507      10612603      -29.17%     

benchmark                  old allocs     new allocs     delta       
BenchmarkAllocatePorts     16436          8243           -49.85%     

benchmark                  old bytes     new bytes     delta       
BenchmarkAllocatePorts     921611        789986        -14.28%     
```