Consistent create methods for tags (fixes #257)

please take a look at the validation carefully, conceptually I might forgotten something.

thanks
sorry yet another thing I didn't quite catch before: we are checking above if refs are set and then saying that positions have to match refs. Thus by the same logic we should say if refs are set, then extents have to match refs. Effectively this means I would change the line (I comment on) to:

```
could(simple_tag, &SimpleTag::references, notEmpty(), {
    must(simple_tag, &SimpleTag::extent, extentsMatchRefs(simple_tag.references()), "number of entries in extent does not match number of dimensions in all referenced DataArrays!") })
```