Implementation of smallest free number

This is the linear time version of the algorithm from chapter one.
Included some helper libraries to aid with testing and benchmarking.