[Bug #1512163] Use one set of locking methods, lockf();
remove the flock() calls.

On FreeBSD, the two methods lockf() and flock() end up using the same
mechanism and the second one fails.  A Linux man page claims that the
two methods are orthogonal (so locks acquired one way don't interact
with locks acquired the other way) but that clearly must be false.
diff --git a/Lib/mailbox.py b/Lib/mailbox.py
index 3777c8e..02fbb85 100755
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -1798,7 +1798,7 @@
 
 
 def _lock_file(f, dotlock=True):
-    """Lock file f using lockf, flock, and dot locking."""
+    """Lock file f using lockf and dot locking."""
     dotlock_done = False
     try:
         if fcntl:
@@ -1810,14 +1810,6 @@
                                              f.name)
                 else:
                     raise
-            try:
-                fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
-            except IOError, e:
-                if e.errno == errno.EWOULDBLOCK:
-                    raise ExternalClashError('flock: lock unavailable: %s' %
-                                             f.name)
-                else:
-                    raise
         if dotlock:
             try:
                 pre_lock = _create_temporary(f.name + '.lock')
@@ -1845,16 +1837,14 @@
     except:
         if fcntl:
             fcntl.lockf(f, fcntl.LOCK_UN)
-            fcntl.flock(f, fcntl.LOCK_UN)
         if dotlock_done:
             os.remove(f.name + '.lock')
         raise
 
 def _unlock_file(f):
-    """Unlock file f using lockf, flock, and dot locking."""
+    """Unlock file f using lockf and dot locking."""
     if fcntl:
         fcntl.lockf(f, fcntl.LOCK_UN)
-        fcntl.flock(f, fcntl.LOCK_UN)
     if os.path.exists(f.name + '.lock'):
         os.remove(f.name + '.lock')