rearrange folly::Function so that its template arguments are deducable.
Summary:
`folly::Function` was an alias to a more complex type with template arguments that could not be deduced. For example, the call to `foo` below was failing to compile.
```
template <class R, class... As>
void foo(folly::Function<R(As...)> f) {
}
int main() {
foo( folly::Function<void(int)>{ [](int i){} } );
}
```
Rearrange the code so that folly::Function is no longer an alias, thus making its template arguments deducable.
Reviewed By: luciang, spacedentist
Differential Revision:
D3256130
fb-gh-sync-id:
fb403e48d161635b3b7f36e53b1679eb46cbfe7f
fbshipit-source-id:
fb403e48d161635b3b7f36e53b1679eb46cbfe7f