New implementation of file locking using flock()

Previous file-locking code was using fcntl locks, which have more
precise and standard semantics for Unix, however they aren't available
on Windows.  Normal lock-files (where existence of the file denotes a
held lock) have a cleanup problem where a process could have an
exception or otherwise forget to clean the lock, and the considerations
about how to handle stale locks.  flock() suffers from the problem where
child processes inherit the lock, and in our case, we don't want the
lock to ever be inherited.  However, if we combine flock() with a
CLOEXEC flag, then a child process can't inherit the file, thus can't
inherit the lock.  (though it doesn't protect against a forked child
that hasn't exec'd, but this is less of a concern)

The lock is no longer package-global, and is now just a file handle ref,
which we store in the field "->_lock_object".  The lock doesn't actually
need to live longer than a single function call, but this preserves the
API.  The next commit will simplify it all at the expense of changing
the API.
Fixed mistake in previous masked by leftover file
Fixed more mistakes masked by using version installed on my system
Locking is now local to the build method, and doesn't need cleaned up

Previous code had the chance to leave the locks active if the build
method died, and so had extra code to clean it up various places.

This version creates the lock as a local variable to the build method,
so it is guaranteed to get cleaned up when the method exits for any
reason.
Changed lock-taking to nonfatal

Per discussion with Henry, it is better to just continue if we can't
acquire the lock rather than throwing an exception.

Also: to test the locking code, using the following after $lock= and
before $self->build_asset :

  if ($ENV{SLEEP}) {
    print STDERR "Going to call build_asset, but sleeping for "
      .$ENV{SLEEP}." first\n";
    sleep $ENV{SLEEP};
  }

and then run as

  SLEEP=20 prove -lv t/05_scopify.t &
  SLEEP=5 prove -lv t/05_scopify.t &

The first one should sleep its entire 20 seconds before the second one
prints its message.

This should be made into a test case.
Remove the testing code from previous commit
Fixed whitespace
Added TODO reminder testcase for parallel/locking
Added discussion of potential locking pitfalls in POD
Bumped version to 0.28
Merge pull request #2 from silverdirk/local-method-lock

Local method lock