Contextual tag list

I should have probably rebased this - but I've run out of time today. Happy to rebase if you require.

The `tagList` should only be shown when tags exist, otherwise it's an empty list. There's very few (I can't think of any), why you'd want to display an empty list. All of the styling can be done to the parent.
this assumes `props.value` will be an array, while that is likely to be true it isn't necessarily so. Notice that the `value=` prop of the TagList ensures an array with `[].concat()`. In either case it should be consistent. Probably best to just do `var val = [].concat(this.props.value)` at the top of the method and use that for length checks and passing into the component.