The key relation for functional differentiation is $$\frac{\delta}{\delta f(y)}f(x)=\delta(x-y), $$ where $\delta(x-y)$ is the Dirac delta function, and the usual properties of differentiation (e.g. linearity, chain rule) still hold.
Another example: $$\frac{\delta}{\delta f(y)}(f(x)f(x))=2 \delta(x-y) f(x).$$
A possible Mathematica version could look like this
FunctionalD[f[x],f[y]]=DiracDelta[x-y]
How would one go about implementing this?
EDIT:
There's also the case of multiple arguments e.g. $$\frac{\delta}{\delta f(y)}(f(x_1)f(x_2))= \delta(x_1-y) f(x_2)+\delta(x_2-y) f(x_1).$$