Adding support for custom commands defined in simon.json

This way if we add any new dependencies or build steps, we can easily add them to `simon start`, or create custom commands like `simon refresh`.

To maintain backwards compatibility I'll add existing tasks as defaults to the base `simon.json`. It'll have one new field that looks like this:
```json
{
	"tasks": {
		"start": [...],
		"install": [...],
		"refresh": [...],
		"update": [...]
	}
}
```

Each member of tasks will look something like like this

```json
{
  "update": [{
    "command": "npm",
    "args": "update"
  }, {
    "command": "composer",
    "args": ["update"]
  }]
}
```

Where `command` is one of the available commands from `simon help`, and `args` is the array/string of parameters for that function.