docs: def load_sample(self, file_path, tags=None):
          """Load a sample (or samples) into workbench
              Args:
                  file_path: path to a file or directory
                  tags (optional): a list of tags for the sample/samples ['bad','aptz13']
              Returns:
                  The list of md5s for all samples
          """
  
          # Recommend a tag
          if not tags:
              print '\n%sRequired: Add a list of tags when you load samples (put \'unknown\' if you must). \
                     \n\t%sExamples: [\'bad\'], [\'good\'], [\'bad\',\'aptz13\']%s' % (color.Yellow, color.Green, color.Normal)
              return
  
          # Do they want everything under a directory?
          if os.path.isdir(file_path):
              file_list = self._all_files_in_directory(file_path)
          else:
              file_list = [file_path]
  
          # Upload the files into workbench
          md5_list = []
          for path in file_list:
              with open(path, 'rb') as my_file:
                  raw_bytes = my_file.read()
                  md5 = hashlib.md5(raw_bytes).hexdigest()
                  if not self.workbench.has_sample(md5):
                      print '%sStreaming Sample...%s' % (color.LightPurple, color.Normal)
                      basename = os.path.basename(path)
                      md5 = self.streamer.stream_to_workbench(raw_bytes, basename, 'unknown', tags)
  
                  print '\n%s  %s%s %sLocked and Loaded...%s\n' % \
                        (self.beer, color.LightPurple, md5[:6], color.Yellow, color.Normal)
  
                  # Add tags to the sample
                  self.workbench.add_tags(md5, tags)
                  md5_list.append(md5)
  
          # Pivot on the sample_set
          set_md5 = self.workbench.store_sample_set(md5_list)
          self.pivot(set_md5, '_'.join(tags))
  
          # Dump out tag information
          self.tags()