openvpn: add openvpn_learnaddress script

I want to share this commonly used openvpn script, that learns connected openvpn host names(certificate common names) and writes them in hosts file and include it in nixpkgs, so managing tun openvpn networks with many hosts becomes easy.

Example usage for server:

```
    services.openvpn.servers = {
      log =
      let
        ca = pkgs.writeText "ca.crt" (builtins.readFile ./keys/ca.crt);
        cert = pkgs.writeText "server.crt" (builtins.readFile ./keys/server.crt);
        key = pkgs.writeText "server.pem" (builtins.readFile ./keys/server.pem);
        dh = pkgs.writeText "dh1024.pem" (builtins.readFile ./keys/dh1024.pem);
      in {
        config = ''
          dev tun
          proto tcp
          server 10.4.0.0 255.255.255.0
          management 127.0.0.1 5094

          ca ${ca}
          cert ${cert}
          key ${key}
          dh ${dh}

          setenv DOMAIN domain.something.xxx
          learn-address ${pkgs.openvpn_learnaddress}/libexec/openvpn/openvpn-learnaddress
          script-security 2
        '';
      };
    };

    services.dnsmasq = {
      enable = true;
      extraConfig = ''
        addn-hosts=/etc/hosts.openvpn-clients
      '';
    };
```

and for client:

```
    services.openvpn.servers = {
      log =
      let
        ca = pkgs.writeText "ca.crt" (builtins.readFile ./keys/ca.crt);
        cert = pkgs.writeText "client.crt" (builtins.readFile ./keys/client.crt);
        key = pkgs.writeText "client.pem" (builtins.readFile ./keys/client.pem);
        dh = pkgs.writeText "dh1024.pem" (builtins.readFile ./x-truder.net/keys/dh1024.pem);
      in {
        config = ''
          client
          dev tun
          proto tcp
          remote domain.something.xxx

          ca ${ca}
          cert ${cert}
          key ${key}
          dh ${dh}
        '';
      };
    };
```