Fix #307 : Drop deprecated APIs (#314)

* `BaseRetrying.call` was long time deprecated and produced `DeprecationWarning`
* `BaseRetrying.fn` was noted as deprecated
diff --git a/releasenotes/notes/drop_deprecated-7ea90b212509b082.yaml b/releasenotes/notes/drop_deprecated-7ea90b212509b082.yaml
new file mode 100644
index 0000000..888233c
--- /dev/null
+++ b/releasenotes/notes/drop_deprecated-7ea90b212509b082.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - "Removed `BaseRetrying.call`: was long time deprecated and produced `DeprecationWarning`"
+  - "Removed `BaseRetrying.fn`: was noted as deprecated"
+  - "API change: `BaseRetrying.begin()` do not require arguments anymore as it not setting `BaseRetrying.fn`"
diff --git a/tenacity/__init__.py b/tenacity/__init__.py
index c7cbb8e..e258d8a 100644
--- a/tenacity/__init__.py
+++ b/tenacity/__init__.py
@@ -246,10 +246,6 @@
         self.retry_error_cls = retry_error_cls
         self.retry_error_callback = retry_error_callback
 
-        # This attribute was moved to RetryCallState and is deprecated on
-        # Retrying objects but kept for backward compatibility.
-        self.fn: t.Optional[WrappedFn] = None
-
     def copy(
         self,
         sleep: t.Union[t.Callable[[t.Union[int, float]], None], object] = _unset,
@@ -334,12 +330,11 @@
 
         return wrapped_f
 
-    def begin(self, fn: t.Optional[WrappedFn]) -> None:
+    def begin(self) -> None:
         self.statistics.clear()
         self.statistics["start_time"] = time.monotonic()
         self.statistics["attempt_number"] = 1
         self.statistics["idle_for"] = 0
-        self.fn = fn
 
     def iter(self, retry_state: "RetryCallState") -> t.Union[DoAttempt, DoSleep, t.Any]:  # noqa
         fut = retry_state.outcome
@@ -379,7 +374,7 @@
         return DoSleep(sleep)
 
     def __iter__(self) -> t.Generator[AttemptManager, None, None]:
-        self.begin(None)
+        self.begin()
 
         retry_state = RetryCallState(self, fn=None, args=(), kwargs={})
         while True:
@@ -396,20 +391,12 @@
     def __call__(self, fn: WrappedFn, *args: t.Any, **kwargs: t.Any) -> t.Any:
         pass
 
-    def call(self, *args: t.Any, **kwargs: t.Any) -> t.Union[DoAttempt, DoSleep, t.Any]:
-        """Use ``__call__`` instead because this method is deprecated."""
-        warnings.warn(
-            "'call()' method is deprecated. " + "Use '__call__()' instead",
-            DeprecationWarning,
-        )
-        return self.__call__(*args, **kwargs)
-
 
 class Retrying(BaseRetrying):
     """Retrying controller."""
 
     def __call__(self, fn: WrappedFn, *args: t.Any, **kwargs: t.Any) -> t.Any:
-        self.begin(fn)
+        self.begin()
 
         retry_state = RetryCallState(retry_object=self, fn=fn, args=args, kwargs=kwargs)
         while True:
diff --git a/tenacity/_asyncio.py b/tenacity/_asyncio.py
index 38932eb..7b2447d 100644
--- a/tenacity/_asyncio.py
+++ b/tenacity/_asyncio.py
@@ -32,7 +32,7 @@
         self.sleep = sleep
 
     async def __call__(self, fn, *args, **kwargs):
-        self.begin(fn)
+        self.begin()
 
         retry_state = RetryCallState(retry_object=self, fn=fn, args=args, kwargs=kwargs)
         while True:
@@ -51,7 +51,7 @@
                 return do
 
     def __aiter__(self):
-        self.begin(None)
+        self.begin()
         self._retry_state = RetryCallState(self, fn=None, args=(), kwargs={})
         return self
 
diff --git a/tenacity/tornadoweb.py b/tenacity/tornadoweb.py
index 8059045..1175bec 100644
--- a/tenacity/tornadoweb.py
+++ b/tenacity/tornadoweb.py
@@ -29,7 +29,7 @@
 
     @gen.coroutine
     def __call__(self, fn, *args, **kwargs):
-        self.begin(fn)
+        self.begin()
 
         retry_state = RetryCallState(retry_object=self, fn=fn, args=args, kwargs=kwargs)
         while True:
diff --git a/tests/test_asyncio.py b/tests/test_asyncio.py
index b638c00..b370e29 100644
--- a/tests/test_asyncio.py
+++ b/tests/test_asyncio.py
@@ -18,8 +18,6 @@
 import unittest
 from functools import wraps
 
-import pytest
-
 from tenacity import AsyncRetrying, RetryError
 from tenacity import _asyncio as tasyncio
 from tenacity import retry, stop_after_attempt
@@ -74,14 +72,6 @@
         assert thing.counter == thing.count
 
     @asynctest
-    async def test_retry_using_async_retying_legacy_method(self):
-        thing = NoIOErrorAfterCount(5)
-        retrying = AsyncRetrying()
-        with pytest.warns(DeprecationWarning):
-            await retrying.call(_async_function, thing)
-        assert thing.counter == thing.count
-
-    @asynctest
     async def test_stop_after_attempt(self):
         thing = NoIOErrorAfterCount(2)
         try:
diff --git a/tests/test_tenacity.py b/tests/test_tenacity.py
index 7417537..f2438a7 100644
--- a/tests/test_tenacity.py
+++ b/tests/test_tenacity.py
@@ -1093,9 +1093,6 @@
     def test_before_sleep_log_raises(self):
         self._before_sleep_log_raises(lambda x: x)
 
-    def test_before_sleep_log_raises_deprecated_call(self):
-        self._before_sleep_log_raises(lambda x: x.call)
-
     def test_before_sleep_log_raises_with_exc_info(self):
         thing = NoIOErrorAfterCount(2)
         logger = logging.getLogger(self.id())
@@ -1406,15 +1403,6 @@
         assert f.calls == [1, 2]
 
 
-class TestInvokeViaLegacyCallMethod(TestInvokeAsCallable):
-    """Retrying.call() method should work the same as Retrying.__call__()."""
-
-    @staticmethod
-    def invoke(retry, f):
-        with reports_deprecation_warning():
-            return retry.call(f)
-
-
 class TestRetryException(unittest.TestCase):
     def test_retry_error_is_pickleable(self):
         import pickle
@@ -1492,12 +1480,6 @@
         monkeypatch.setattr(tenacity.nap.time, "sleep", sleep)
         yield sleep
 
-    def test_call(self, mock_sleep):
-        retrying = Retrying(**self.RETRY_ARGS)
-        with pytest.raises(RetryError):
-            retrying.call(self._fail)
-        assert mock_sleep.call_count == 4
-
     def test_decorated(self, mock_sleep):
         with pytest.raises(RetryError):
             self._decorated_fail()