Handle GET /blockchains/:blockchainID/name_count
        Takes `all=true` to include expired names
        Reply with the number of names on this blockchain

def GET_blockchain_num_names( self, path_info, blockchain_name ):
        """
        Handle GET /blockchains/:blockchainID/name_count
        Takes `all=true` to include expired names
        Reply with the number of names on this blockchain
        """
        if blockchain_name != 'bitcoin':
            # not supported
            self._reply_json({'error': 'Unsupported blockchain'}, status_code=404)
            return

        include_expired = False
        
        qs_values = path_info['qs_values']
        if qs_values.get('all', '').lower() in ['1', 'true']:
            include_expired = True

        blockstackd_url = get_blockstackd_url()
        num_names = blockstackd_client.get_num_names(include_expired=include_expired, hostport=blockstackd_url)
        if json_is_error(num_names):
            # error
            status_code = num_names.get('http_status', 502)
            return self._reply_json({'error': num_names['error']}, status_code=status_code)

        self._reply_json({'names_count': num_names})
        return