how do you sign and verify a message that you own a bitcoin address using javascript? Is there a bitcoin library or even just pure javascript way of signing and verifying you own a btc address?
bitcoinjs-lib and bitcore-lib are both javascript libraries that allow for key signing. 

For example with bitcore-lib:

var Message = require('bitcore-message');

var privateKey = new bitcore.PrivateKey('L23PpjkBQqpAF4vbMHNfTZAb3KFPBSawQ7KinFTzz7dxq6TZX8UA');
var message = new Message('This is an example of a signed message.');

var signature = message.sign(privateKey);


EDIT: To also include the verification example from bitcore's github. 

var Message = require('bitcore-message');

var address = '13Js7D3q4KvfSqgKN8LpNq57gcahrVc5JZ';
var signature = 'IBOvIfsAs/da1e36W8kw1cQOPqPVXCW5zJgNQ5kI8m57FycZXdeFmeyoIqJSREzE4W7vfDmdmPk0HokuJPvgPPE=';

var verified = new Message('This is an example of a signed message.').verify(address, signature);