### Is there an existing issue for this?

- [X] I have searched the existing issues

### Enhancement description

Based on [customer request](https://localstack-community.slack.com/archives/C0598EHPT1N).
Implement operation `scan` and `query` for global tables in DynamoDB service.

Test sample:

```shell
# Create a table
awslocal dynamodb create-table --table-name global01 --key-schema AttributeName=id,KeyType=HASH --attribute-definitions AttributeName=id,AttributeType=S --billing-mode PAY_PER_REQUEST --region ap-south-1

#Create replicas
awslocal dynamodb update-table --table-name global01  --replica-updates '[{"Create": {"RegionName": "eu-central-1"}}, {"Create": {"RegionName": "us-west-1"}}]'  --region ap-south-1


# Table can be operated on in all replicated regions
awslocal dynamodb list-tables --region eu-central-1

awslocal dynamodb put-item --table-name global01 --item '{"id":{"S":"foo"}}' --region eu-central-1
awslocal dynamodb describe-table --table-name global01 --query 'Table.ItemCount' --region ap-south-1

# Get all replicas
awslocal dynamodb describe-table --table-name global01 --query 'Table.Replicas' --region us-west-1


# Query in all regions
awslocal dynamodb query --table-name global01 --key-condition-expression 'id = :id' --expression-attribute-values '{":id":{"S":"foo"}}' --region ap-south-1
awslocal dynamodb query --table-name global01 --key-condition-expression 'id = :id' --expression-attribute-values '{":id":{"S":"foo"}}' --region eu-central-1
awslocal dynamodb query --table-name global01 --key-condition-expression 'id = :id' --expression-attribute-values '{":id":{"S":"foo"}}' --region us-west-1
```


### 🧑‍💻 Implementation

_No response_

### Anything else?

_No response_
try:
        size_bytes = len(json.dumps(item))
    except TypeError:
        size_bytes = len(str(item))
    return size_bytes
def get_global_secondary_index(table_name, index_name):
    schema = SchemaExtractor.get_table_schema(table_name)
    for index in schema["Table"].get("GlobalSecondaryIndexes", []):
        if index["IndexName"] == index_name:
            return index
    raise ResourceNotFoundException("Index not found")
def is_local_secondary_index(table_name, index_name) -> bool:
    schema = SchemaExtractor.get_table_schema(table_name)
    for index in schema["Table"].get("LocalSecondaryIndexes", []):
        if index["IndexName"] == index_name:
            return True
    return False
def is_index_query_valid(query_data: dict) -> bool:
    table_name = to_str(query_data["TableName"])
    index_name = to_str(query_data["IndexName"])
    if is_local_secondary_index(table_name, index_name):
        return True
    index_query_type = query_data.get("Select")
    index = get_global_secondary_index(table_name, index_name)
    index_projection_type = index.get("Projection").get("ProjectionType")
    if index_query_type == "ALL_ATTRIBUTES" and index_projection_type != "ALL":
        return False
    return True
def has_event_sources_or_streams_enabled(table_name: str, cache: Dict = None):