Expands ProfileManager and profile unit tests.

Adds methods for deleting, creating, and listing
profiles. Also modifies get_profile by adding
an extra arg to specify whether a non-existing profile 
should be auto-created.

Adds related unit tests to test_profile.

Methods added:
- create_profile
- list_profiles
- delete_profile

Related to https://github.com/Freeseer/freeseer/pull/632
There's a lot of nested conditionals which is a bit messy.

```python
if name in self._cache:
    ...
else:
    if os.path.exists(full_path):
        ...
    elif create_if_needed:
        ...
    else:  # Can even get rid of this else since all the previous branches return
        raise ...
```