Improve contracts for Set

Similar to how it has been done to Dict, functions in the
Set are polymorphic but Set implementations should not provide
polymorphic functions.

This reduces the duplication inside each set implementation
and provides both strict and polymorphic interfaces.
Make sure unintialized @attribute warnings points to the correct file
Improve coverage for Set and Dict with mixed types
Merge pull request #2018 from mururu/fix-warning-filename

Make sure unintialized @attribute warnings points to the correct file
Only accept stacktraces in Module.get_attribute/3
Update CHANGELOG
Fix bootstraping issues