Implement interpolations

This enhancement enables one to specify interpolations that are to be
applied to any values that match the search element. The replacement can
be either a simple "replace", which uses str_replace to do simple string
substitution, or an "exec", which uses the output of a command for the
replacement.

The `interpolations` config option is an array of search & replace
values to interpolate into config values at runtime. For an example, see
this configuration fragment:

```json
"interpolations": [
	{
		"search": "%branch%",
		"exec": "git symbolic-ref --short HEAD"
	},
	{
		"search": "<#LIVESERVER#>",
		"replace": "www.example.com"
	}
],
"servers": {
	"dev": {
		"user": "operator",
		"host": "<#LIVESERVER#>",
		"webroot": "/usr/local/www/%branch%/shared/cached-copy"
	},
```

This would have the effect of making `beam up dev` use `www.example.com`
as the host, and `/usr/local/www/some-feature/shared/cached-copy` as the
webroot, if you happen to be working on a git branch named
"some-feature".

Interpolations are applied after any imports. This means that the import
paths are not subject to substitutions, but the values in the imported
files are subject to them.