Changed id and idref behavior on Observable

I changed the  behavior for setting `id_` and `idref` so that setting one unsets the other. This allows us to construct an Observable with an `idref` without having to unset the `id` in another step. I copied the code from python-stix, which behaves the same way. 

I also added `title` and `description` to the` __init__` parameters list, as the core constructs in python-stix allow `title`, `description`, `short_description`, `id`, `idref`, and `timestamp` properties to be set via the `__init__` call.

This change should clean up code like that found here: http://stixproject.github.io/idioms/ttp/c2-ip-range/