title: Panel widgets do not update plot
body: <p>I'm trying to use panel widgets inside a class in order to change a plot. The example below outputs the plot once, but when I select a different variable from the widget it doesn't update the plot.</p>
  
  <pre class="lang-py prettyprint-override"><code>import pandas as pd
  import param
  
  import holoviews as hv
  hv.extension('bokeh')
  
  import panel as pn
  pn.extension()
  
  df = pd.DataFrame({'index':[1,2,3,4,5],
                     'signal1':[1,2,3,4,5],
                     'signal2':[5,4,3,2,1]}).set_index('index')
  
  class Plot(param.Parameterized):
      def __init__(self, df):
          self.multi_select = pn.widgets.MultiSelect(name='Vars', value=['signal1'],
                                                     options=['signal1', 'signal2'])
          self.df = df
          self.watcher = self.multi_select.param.watch(self.dashboard, 'value')
          super().__init__()
  
      def dashboard(self, *events, **kwargs):
          self.plt = hv.Curve(self.df, [self.df.index.name, self.multi_select.value[0]])
          return self.plt
  
  a = Plot(df)
  pn.Row(a.multi_select,a.dashboard)
  </code></pre>
  
  <p>However, if instead of panel widgets I use param, it works as expected.</p>
  
  <pre class="lang-py prettyprint-override"><code>class Plot2(param.Parameterized):
      multi_select = param.ListSelector(default=['signal1'],
                                        objects=['signal1', 'signal2'])
  
      df = df
  
      def dashboard(self, **kwargs):
          self.plt = hv.Curve(self.df, [self.df.index.name, self.multi_select[0]])
          return self.plt
  
  b = Plot2()
  pn.Row(b.param,b.dashboard)
  </code></pre>
  
  <p>Am I doing something wrong or it's not possible at all?
  Thanks</p>