fetch ports by svn: portsnap does not allow non-interactive use

The portsnap utility only allows running "portsnap fetch" interactively (to prevent people from hammering on the server). This causes an error when running the manifest on a clean system with no existing ports tree.

A class parameter $port_fetch_method is added to choose a different way to fetch the ports tree. By default, svn is used, which works well, although it is slightly slower.