The best choice is option 1.
Why? Because when you use a unqualified function name (an an overloaded operator is a function), apart from normal name lookup, Argument-Dependent lookup is applied, that is (informally) all the namespaces where the arguments were declared are searched.
E.g.
namespace N
{
class X(){};
void f(X){}
}
int main()
{
N::X x;
f(x); //works fine, no need to qualify f like N::f
}
The same is with operators.
On the other hand, in case of option 2 the operator still will be found because ostream is in std (same ADL rule). But it is not a good idea to add stuff to std namespace.
And the third option is bad, stylistically - why do it if the first option is sufficient?
So, definitely option 1.
HTH.