Create model and mechanics to version ``Applications``.

https://github.com/madewithbytes/us_ignite/issues/78

The content of the ``Application`` has been relocated
to a ``ApplicationBase`` abstract model to version
this content.

Any metadata of the application such as slug or
user details are keept in the original model.

An application can be duplicated by using the method
``create_version`` in the ``ApplicationVersionManager``.
Add mechanics to version the ``Application``.

https://github.com/madewithbytes/us_ignite/issues/78

The version view only requires a intent of versioning
with a ``POST`` request payload.

Only members that can edit the ``Application`` have
access to it.
Add button to create a version of the ``Application``.

https://github.com/madewithbytes/us_ignite/issues/78

The button is only available to the owner of the
application.
List versions of the application in the ``Application`` homepage.

https://github.com/madewithbytes/us_ignite/issues/78

When the ``Application`` has previous versions available
they will be listed in the profile page of the app.
Add detail page for an ``ApplicationVersion``.

https://github.com/madewithbytes/us_ignite/issues/78

The visibility of the version depends on the
visibility of the original ``Application``.