I'm trying to minimize the amount of breakage that users have to do to migrate to the new API -- the package object has a type ProxyServer which points to this class, reflecting how it used to look.  It's using a ProxyServer() style though, and so either I use a case class or define an object.

Generally I think case classes are appropriate for "builder" objects, mainly because `copy()` is so incredibly useful.