Implement functional options for Attacker

This change set applies the ideas presented by @davecheney during his [dotGo presentation](http://dotgo.sourcegraph.com/post/99643162983/dave-cheney-functional-options) which were originally proposed by Rob Pike [in his blog](http://commandcenter.blogspot.fr/2014/01/self-referential-functions-and-design.html).
Or even, 

a := Attacker {
    dialer: &net.Dialer { ... },
}