Fix BeNilMatcher not matching nil pointers

I noticed that the `BeNilMatcher` returns `false` for pointers that point to a nil value. Here is a code example that fails:

``` go
var _ = Describe("BeNil", func() {
	It("should succeed when passing nil pointer", func() {
		var f *struct{}
		Ω(f).Should(BeNil())
	})
```

This is because `actual` is used as an `interface{}` type inside the `BeNilMatcher`. I have changed the implementation of it to, when the `actual == nil` check fails, it uses reflection to get check if `actual` is a pointer and if so, it check the element value for nil.

Here is the implementation:

``` go
func (matcher *BeNilMatcher) Match(actual interface{}) (success bool, message string, err error) {
	if actual == nil {
		return true, formatMessage(actual, "not to be nil"), nil
	} else {
		// When the value is not nil, check if it is a pointer
		// value and check if the element is nil.
		t := reflect.ValueOf(actual)
		if t.Kind() == reflect.Ptr {
			return t.IsNil(), formatMessage(actual, "to be nil"), nil
		}

		return false, formatMessage(actual, "to be nil"), nil
	}
}
```