partial implementation of 'publish' for filesystem

Example usage:

```py
from tardis.impl.filesystem import FileSystem
f = FileSystem({'repository': 'repo'})
s = f.read_spec('example/simple.yaml')
f.publish(s, '0.0.1')
f.promote(s, '0.0.1', 'RC-1')
f.list_versions(s)
```

In [4]: s = f.read_spec('example/simple.yaml')

In [5]: f.publish(s, '0.0.1')
Out[5]: 'repo/my.project.namespace/my-cool-app/0.0.1'

In [6]: p = f.publish(s, '0.0.2')

In [7]: p
Out[7]: 'repo/my.project.namespace/my-cool-app/0.0.2'

In [8]: f.promote('0.0.2', '1.2.3')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-dff9e4011bbc> in <module>()
----> 1 f.promote('0.0.2', '1.2.3')

TypeError: promote() takes exactly 4 arguments (3 given)

In [9]: f.promote(s, '0.0.2', '1.2.3')
Out[9]: 'repo/my.project.namespace/my-cool-app/1.2.3'

In [10]: f.promote(s, '0.0.2', '1.2.3')