[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.
How useful is it to store this? it only helps in case of an invalid `Broadcast` instance. (PS you can use string interpolation instead of `format` in these changes if you care to)