Improve dll installation logic

@vtjnash 

Adds a `$(build_shlibdir)` to abstract away Windows strangeness. Also ensures that our makefiles are smart about what needs installing and what doesn't.  (Without this, certain makefile rules always think they need to install files, etc...)