Feature/ratio suburb lines

This is sort of a reverse-cake-pattern. Whereas the Cake pattern adds functionality to the inheriting Traits by adding dependencies through vals, this requires that the trait be self-typed against the inheriting class. This is an interesting inversion of the cake pattern that I've used (a la https://github.com/geotrellis/geotrellis/blob/0.9/src/main/scala/geotrellis/raster/op/local/LocalOpMethods.scala#L31).

Here's an article on the Cake pattern that uses the Component terminology: http://jonasboner.com/2008/10/06/real-world-scala-dependency-injection-di/. It talks about using the cake pattern as Dependency Injection rather than method adding.

I'm not sure that this is the right pattern to use in this setting. You're using it to add a "boundaries" method, which takes an ID and returns a Boundary instance (which I think shouldn't be a inner class). Is there a better way to add this functionality to a call site than inheritance? It feels like there probably is, but maybe this is right. Either way, good use of self typing, nice example of thinking through type inheritance and using it to your advantage.