Refactor markdown rendering to use block-based processing
Introduces block-level parsing and rendering for markdown content by adding `parseBlocks.ts` and updating `marked.ts` to support block tokens with stable IDs. Refactors `MarkdownRenderer.svelte` to process and render markdown in independent blocks using the new `MarkdownBlock.svelte` component, improving memoization and streaming efficiency. This change also ensures better handling of complex markdown features such as footnotes and math blocks.