Почему не работает функция?
Проблема в том, что код функций из шаблонов генерируется по мере надобности. 
Вот встретил компилятор где-то Test<int> - и начинает создавать функцию для int.
Но в единице трансляции с Functions.cpp он этого не встретил и ничего не генерирует. А когда он компилирует Source.cpp он может только сгенерировать декларацию, но не определение функции. Ведь он видит хедер, но не что написано в Functions.cpp.

Поэтому, если весь шаблон определять в .h файле то компилятор сможет сгенерировать что ему надо всегда.

Второй варинат решения проблемы - в Functions.cpp указать компилятору, что шаблон будет использоватся с такиим-то типами:
using Test<int>;

Этот подход лучше тем, что один и тот же код не компилируется кучу раз, как если бы он был в хедере.
С другой стороны, вам надо заранее в месте определения шаблона расписать все используемые с ним типы вручную.

Обычно минусы тут перевешивают плюсы и шаблоны всегда целиком пишут в хедерах. Но это не единственный враиант. Неправда, что шаблоны должны целиком находится в хедерах.
Шаблоны надо реализовывать в *.h файле.