Separate oguid entry points.

Add a parse method to create oguids from their string-representation. Based on feedback from @senny in https://github.com/4teamwork/opengever.core/pull/701#event-204278137
I'd probably push that conditional down to the calling end. From the point of `Oguid` there are two possible form of representation, a `String` or a `Oguid`. If a caller decides to accept both forms, I think it should take care of converting them to whatever is needed downstream.

As a side note. The characteristics of this class resemble a `ValueObject`. If that is the case (I can't say for sure as I'm not aware how the SQL-Alchemy integration works) the following should not be needed:

```python
else:
  admin_unit_id, int_id = oguid.admin_unit_id, oguid.int_id
  return cls(admin_unit_id, int_id)
```

Instead the instance should already be an exact representation:

```python
else:
  return oguid
```

As I suggested to move this to the calling code, this can come in handy as there is no need to construct a copy. It would look something like:

```python
def by_oguid(self, oguid):
  if isinstance(oguid, basestring):
    oguid = Oguid.parse(oguid)

  # ...
```