[SPARK-4030] Make destroy public for broadcast variables

This change makes the destroy function public for broadcast variables. Motivation for the change is described in https://issues.apache.org/jira/browse/SPARK-4030.
This patch also logs where destroy was called from if a broadcast variable is used after destruction.
@srowen yeah I asked for tracking the callsite because we now have this case where someone can try to use a destroyed broadcast (destroyed by e.g. another thread) and it will be very hard for users to debug this. Tracking the callsite has almost no overhead here and it seemed like it might be useful for debugging.