Romires, написано же в первой строчке, в чём проблема. Когда компилятор обрабатывает код шаблона, он не знает в точности, что такое Owner<T>, а ещё меньше он знает, чем в конце концов окажется член Holder - может функцией, может полем. Поэтому в твоём случае Owner<TData>::Holder для компилятора не определёно и может потом, когда параметр шаблона определится, за счёт специализаций оказаться чем угодно. У тебя же оно стоит в качестве результата функции, т.е. это должно быть типом, а не полем. Поэтому компилятор просит пометить эту конструкцию специальным служебным словом. Вне класса надо писать.
template<class TData> typename Owner<TData>::Holder Owner<TData>::foo(TData x)