[WIP] fix getNextAvailableAddress to use local maximums instead of just last a...

...ddress

@dallasmarlow @joshrabinowitz @Primer42 @maddalab Comments/reviews welcome. This intends to fix IP allocation when not using pools. Old behavior would just allocate the next address, regardless of if a lower address was free. It would fail to allocate if you had a range 0..20 and IPs 18,19,20 were in use :(

Ive tested this for edgecases, and believe it is working correctly. However, I would love comments. I have a sneaking suspicion I could do this slickly with a for comprehension, but it escapes me. 


This is possibly better off as an if, you aren't using limit anywhere. Code generated for pattern matching especially with guards is worse than an if stmt

```
tumblr-MacBookPro-78290b:~ bhaskar$ /Users/bhaskar/apps/scala-2.10.3/bin/scalac -Xprint:jvm t.scala
[[syntax trees at end of                       jvm]] // t.scala
package <empty> {
  object App extends Object {
    def x(a: Int): Option = {
      case <synthetic> val x1: Int = a;
      (x1: Int) match {
        case _ => if (x1.<(20))
          scala.None
        else
          new Some(scala.Int.box(20))
      }
    };
    def <init>(): App.type = {
      App.super.<init>();
      ()
    }
  }
}

tumblr-MacBookPro-78290b:~ bhaskar$ /Users/bhaskar/apps/scala-2.10.3/bin/scalac -Xprint:jvm t1.scala
[[syntax trees at end of                       jvm]] // t1.scala
package <empty> {
  object App extends Object {
    def x(a: Int): Option = if (a.<(20))
      scala.None
    else
      new Some(scala.Int.box(20));
    def <init>(): App.type = {
      App.super.<init>();
      ()
    }
  }
}
```