shared: Fix recovery after an interrupted build

When build process is interrupted (like when the buildout process
terminated by SIGKILL), building with shared leave the system in a state
that looks like installation succeeded, so next execution will assume
the part was properly installed.


The behavior was something like this:


    if isSharedPartSignatureOK():
      useThisAlreadyInstalledPart()
    else:
      writeSignatureInSharedPart()
      try:
        build()
      except:
        removeSharedPart()
        raise


and when program is terminated during build step, the signature is
there.

The fix is to write signature later, algorithm becomes:


    if isSharedPartSignatureOK():
      useThisAlreadyInstalledPart()
    else:
      try:
        build()
      except:
        removeSharedPart()
        raise
      writeSignatureInSharedPart()

/reviewed-on !10
12 jobs for master in 0 seconds
Status Job ID Name Coverage
  External
passed SlapOS.Eggs.UnitTest-Master.Python2

00:14:17

passed SlapOS.Eggs.UnitTest-Master.Python3

00:15:48

passed SlapOS.Eggs.UnitTest-Master.Python2

00:16:52

passed SlapOS.Eggs.UnitTest-Master.Python2

00:27:36

passed SlapOS.Eggs.UnitTest-Master.Python2

00:14:57

passed SlapOS.Eggs.UnitTest-Master.Python2

00:15:45

passed SlapOS.Eggs.UnitTest-Master.Python2

00:13:30

passed SlapOS.Eggs.UnitTest-Master.Python3

00:14:37

passed SlapOS.Eggs.UnitTest-Master.Python3

00:23:21

passed SlapOS.Eggs.UnitTest-Master.Python3

00:24:58

passed SlapOS.Eggs.UnitTest-Master.Python3

00:15:52

passed SlapOS.Eggs.UnitTest-Master.Python3

00:15:57