code: function clones (source, bind, target) {
    let opts = {
      bind: bind,
      visited: [],
      cloned: []
    }
    return _clone(opts, source, target)
  }
docs: A Deep-Clone of object `source`
  
  @static
  @param {Object} source - clone source
  @param {Object} [bind] - bind functions to this context
  @return {Any} deep clone of `source`
  @example
  const clones = require('clones')
  
  const source = [
  {a: {b: 1}},
  {c: {d: 2}},
  '3',
  function () { return 4 }
  ]
  // adding circularities
  source[0].a.e = source[0].a
  
  const dest = clones(source)
  // => [{ a: { b: 1, e: [Circular] } },
  //     { c: { d: 2 } },
  //     '3',
  //     [Function] ]