[WIP] Project Template

This is an WIP of the Project Template work.
The code below define the Project structs and implement parameters substitution for the JSON.

**Changelog**

* Make getting `Parameter` more effective by converting the `Parameters` to Hash
* The `PValue#Substitute` function now modifies the value of itself
* Added `ServiceLinks` to `SubstituteEnvValues`
* Added `rand.Seed` to `ProcessParameters`
* Added godocs
* Added `ServiceLinks` resolving in terms that environment variables exported by the ServiceLink are copied into target service.
So I think template transformations should create a new object just as a general cleanliness issue.  You're loading a template and transforming it - it should be clear what is user input (override parameters) and what is part of the template (defaults / generation).  When you invoke the transformation, those overrides should be explicitly passed, checked, then resolved.  I just don't think process is a method on templates, it's a method on a transformation object