Get all subdomains in existence.
        Requires page={int}
        Returns the list on success
        Returns 400 on invalid arguments
        Returns 502 on failure to get names

def GET_subdomains( self, path_info ):
        """
        Get all subdomains in existence.
        Requires page={int}
        Returns the list on success
        Returns 400 on invalid arguments
        Returns 502 on failure to get names
        """
        qs_values = path_info['qs_values']
        page = qs_values.get('page', None)
        if page is None:
            log.error("Page required")
            return self._reply_json({'error': 'page= argument required'}, status_code=400)

        try:
            page = int(page)
            assert page >= 0
        except Exception:
            log.error("Invalid page")
            return self._reply_json({'error': 'Invalid page= value'}, status_code=400)

        offset = page * 100
        count = 100

        blockstackd_url = get_blockstackd_url()
        res = blockstackd_client.get_all_subdomains(offset, count, hostport=blockstackd_url)

        if json_is_error(res):
            log.error("Failed to list all subdomains (offset={}, count={}): {}".format(offset, count, res['error']))
            return self._reply_json({'error': 'Failed to list all names'}, status_code=res.get('http_status', 406))

        return self._reply_json(res)