Disallow function with declaration but no implementation

Requires that when a function is declared, a definition for it must exist. This prevents one from declaring (say) memcpy, not defining it, and then calling possibly system-provided implementation of it. This could allow accessing arbitrary memory. Fixes #77.

Based on top of the std::tr1::shared_ptr fix.