function getRoutes (entry) {
  if (entry === true) {
    return []
  }

  if (typeof entry === 'string') {
    return [ getRouteEntry(entry) ]
  }

  if (Array.isArray(entry) === true) {
    return entry.reduce((acc, route) => {
      acc.push(...getRoutes(route))
      return acc
    }, [])
  }

  if (typeof entry === 'object') {
    return Object.keys(entry)
      .map(key => getRouteEntry(key, getRoutes(entry[ key ])))
  }

  throw new Error('Invalid route node: ' + JSON.stringify(entry))
}
Examples:
  getRoutes('/my/route')
  getRoutes([ '/my/route' ])
  getRoutes([ '/my/route', '/other/route' ])
  getRoutes({ '/my': 'route' })
  getRoutes({ '/my': 'route', '/other': 'route' })
  getRoutes({ '/my': [ 'route', 'otherRoute' ] })
  getRoutes({ '/my': { 'route': true, otherRoute: 'subRoute' } })
  getRoutes({ '/my': { 'route': { subRoute: 'final' } } })
  getRoutes([ { '/my': 'route' }, { '/other': { route: 'subRoute' } } ])

@param {*} entry
@returns RouteConfig[]