Not null

I hear you like SFINAE...
I wonder if this and other "missing specializations" could cause trouble in templates.  For instance:
```
template<typename Pointer>
void Foo(not_null<Pointer> p);

Foo<not_null<int*>>  // oops!
```

We'll see.