Helpers for dealing with assemblyscript memory inside wasmer-runtime

```rust

[macro_use]

extern crate wasmerruntime; extern crate wasmeras;

use std::error::Error; use wasmeras::{AsmScriptRead, AsmScriptStringPtr}; use wasmerruntime::{imports, instantiate, Ctx, Func};

fn main() -> Result<(), Box> { let wasm = includebytes!(concat!(env!("CARGOMANIFEST_DIR"), "/get-string.wasm"));

let import_object = imports! {
    "env" => {
        "abort" => func!(abort),
    },
};

let instance = instantiate(&wasm[..], &import_object)?;

// for the test we use simple function returning constant string:
//
// export function getString(): string {
//   return "TheString";
// }
let get_string: Func<(), AsmScriptStringPtr> = instance.func("getString")?;

let str_ptr = get_string.call()?;

let string = str_ptr.read(instance.context().memory(0))?;

assert_eq!(string, "TheString");

Ok(())

}

// if get_string throws an exception abort for some reason is being called fn abort(ctx: &mut Ctx, message: AsmScriptStringPtr, filename: AsmScriptStringPtr, line: i32, col: i32) { let memory = ctx.memory(0); let message = message.read(memory).unwrap(); let filename = filename.read(memory).unwrap(); eprintln!("Error: {} at {}:{} col: {}", message, filename, line, col); } ```