ch 42: doodles investigating symbol visibility

Let's say you write some code which links to a shared library. In your code
you write a function A() and in your main you call function B() which is found
in the library. But, in the library is also found a function called A(), and
the library function B() calls an A(); which A() will get run? The one from
your code, or the one found in the library?

As it turns out, the answer is: it depends. It depends on a couple different
things such as whether the A() in your code is declared static, the cmdline
arguments with which you invoke your compiling and link-editor, and whether or
not the library is linked to your application at compile time or at run time
(and accessed via dlopen() and friends).

In Sections 41.12 and 42.1.6 the book discusses these situations but doesn't
prove them, and doesn't throw 'static' into the mix.

This commit contains my doodles for investigating these scenarios and provides
a README which includes a summary.