filedesc: factor out some code out of fdescfree

Previously it had a huge self-contained chunk dedicated to dealing with shared
tables.

No functional changes.


git-svn-id: svn+ssh://svn.freebsd.org/base/head@273968 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f